问题标签 [load-data-infile]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
20 回答
1135089 浏览

mysql - 如何将 CSV 文件导入 MySQL 表?

我有一个来自客户端的非规范化事件日志 CSV,我试图将其加载到 MySQL 表中,以便我可以重构为一种健全的格式。我创建了一个名为“CSVImport”的表,该表对于 CSV 文件的每一列都有一个字段。CSV 包含 99 列,因此这本身就是一项艰巨的任务:

表上没有约束,所有字段都包含 VARCHAR(256) 值,除了包含计数(由 INT 表示)、是/否(由 BIT 表示)、价格(由 DECIMAL 表示)和文本简介(由 TEXT 表示)。

我试图将数据加载到文件中:

整张桌子都塞满了NULL

我认为问题在于文本简介包含不止一行,并且 MySQL 正在解析文件,就好像每一新行都对应一个数据库行一样。我可以毫无问题地将文件加载到 OpenOffice 中。

clientdata.csv 文件包含 2593 行和 570 条记录。第一行包含列名。我认为它是逗号分隔的,并且文本显然是用双引号分隔的。

更新:

如有疑问,请阅读手册:http ://dev.mysql.com/doc/refman/5.0/en/load-data.html

我在声明中添加了一些信息,LOAD DATA表明 OpenOffice 足够聪明,可以推断,现在它加载了正确数量的记录:

但是仍然有很多完整的NULL记录,并且加载的数据似乎都没有放在正确的位置。

0 投票
5 回答
15275 浏览

sql - mysql "datetime NOT NULL DEFAULT '1970-01-01'" 变成 0000-00-00 00:00:00

我创建了一个列

但是,当我使用 LOAD DATA 命令从 CSV 文件上传数据时,date_start保存的值为 0000-00-00 00:00:00 的空白条目?

0 投票
1 回答
105 浏览

mysql - 将 .cvs 导入 MySQL 数据库时,某些数据在没有明显原因的情况下被修改,知道吗?

所以我在 phpMyAdmin 中使用 Import CVS via LOAD DATA 将 80000+ 行 .cvs 文件导入 MySQL 数据库,它似乎工作正常,没有错误消息。

问题是,在导入之后,表中的所有行(从第 24002 行开始)在我的一个数据库字段中都有相同的编号,而我导入的 .cvs 文件中甚至不存在这个编号。

以此为例:

我尝试了不同的方法,但没有任何帮助:

  • 在第 24003 行开始导入
  • 从 .cvs 文件中删除第 24001、24002 行
  • 从 .cvs 文件中删除 24002 第一行
  • 导入没有 LOAD DATA 的 .cvs 文件

这是 .cvs 文件中的示例行:

不涉及特殊字符,只有 az、AZ 和 0-9。

我完全不知道这个错误可能来自哪里,有什么想法吗?

提前致谢

0 投票
2 回答
3058 浏览

sql - 使用命令行将excel数据导入mysql表

我有很多 excel 文件要导入到 mysql 表中。

是否有任何mysql命令/程序直接获取excel文件并将其一一导入表中?

或者通过几个步骤来完成这项任务的任何更简单的方法?

0 投票
4 回答
17107 浏览

mysql - MySQL LOAD DATA INFILE 需要哪些文件和目录权限?

我有一个脚本试图将一些数据加载到 MySQL 中LOAD DATA INFILE。出于某种原因,如果文件在/tmp目录中,它可以工作,但如果文件在具有相同权限的另一个目录中,则不能。我找不到任何方法让 MySQL 从/tmp目录或数据库目录外部导入数据,但我在手册中找不到任何解释为什么会这样的内容。

情况:

AFAICT 这些在重要方面是相同的。但是,如果在 MySQL 命令行我这样做:

我从论坛帖子中收集到 errno 13 表示权限问题。似乎/tmp是 MySQL 特殊对待的,但为什么呢?我能来的最接近的是手册中的一句话:

出于安全原因,在读取位于服务器上的文本文件时,这些文件必须位于数据库目录中或可供所有人读取。

/tmp不在数据库目录中,但可能会被视为存在。那么我应该如何设置才能让它读取外部文件/tmp呢?

0 投票
1 回答
4406 浏览

mysql - LOAD DATA LOCAL INFILE 失去连接,如何修复超时?

我正在通过 LOAD DATA 将一个大文本文件加载到我的数据库中。该文件长约 122,000 行。更不用说,数据库被设计为在该表上的插入后触发。究竟发生的是查询开始执行,持续执行 15-20 分钟,然后返回

然后

出现错误后,我重新执行查询并立即完成;

而且表确实是进口的;

我在 Mac OS X 10.6.4 上运行 mysqld 5.1.51,我的查询是

似乎数据库连接超时,我该如何解决?

0 投票
1 回答
1427 浏览

mysql - LOAD DATA LOCAL INFILE 有时仅适用

我有一个在 MySQL 终端中运行良好的 LOAD DATA 命令。它在我的本地服务器提供的测试 PHP 文件中运行良好。它在同一台服务器上的 phpMyAdmin 中运行良好。当从同一台服务器上的 Magento 运行时,它莫名其妙地崩溃了。

我已经确认所有方法都使用相同的登录凭据。如果我从查询日志中复制失败的命令(包括从连接开始的所有先前查询)并粘贴到任何其他方法中,它就会神秘地再次起作用。查询本身不能出错。

因此我推断问题一定是权限问题。文件权限已设置并适用于同一帐户上的其他实现。Magento 使用 pdo_mysql 作为连接。如果我在测试文件中复制它,它就可以工作。Magento 必须设置一些干扰的参数。

我得到的错误是SQLSTATE[42000]: Syntax error or access violation: 1148 The used command is not allowed with this MySQL version. 我必须使用“LOCAL”修饰符关键字,因为我不能保证可以访问数据库服务器。

SO上最近的上一个问题涉及drupal,错误是不同的,但我记得drupal也使用pdo_mysql进行连接,也许是相关的。Magento 上唯一提到此错误的是该线程,该线程在 LOAD DATA LOCAL INFILE 命令上也失败。

0 投票
4 回答
9826 浏览

mysql - Mysql:如何在我的 LOAD DATA INFILE 查询中使用 RTRIM?

在我的代码中,我有一个如下所示的查询:

这是我尝试加载的文件中包含的示例行:

您会注意到在示例行的末尾有很多空格。这些空格都出现在终止该行的换行符“\n”之前。问题是这些空间被输入到数据库中。

运行命令时如何删除额外的空格LOAD DATA INFILE?有没有办法使用RTRIM

编辑

正如ajreal建议的那样,我必须重新准备文件。文件准备好后,它已正确插入数据库。我修改了位于http://gabeanderson.com/2008/02/01/unixlinux-find-replace-in-multiple-files/的 bash 脚本来完成此操作。代码如下所示:

0 投票
1 回答
1895 浏览

mysql - LOAD DATA INFILE 语法错误

询问:load data infile 'systemmessage.txt' ignore into table systemmessage (message) lines starting by 'a,' terminated by '\0' ignore 1 lines

在“开始的行”附近给我一个语法错误。如果我删除“开始于”部分,则错误现在是“终止于”。如果我也将其删除,则错误是“忽略 1 行”。到底哪里有问题??文件存在,表存在,如果我删除它加载的所有检查,但数据错误。

0 投票
1 回答
202 浏览

mysql - 加载数据奇怪的行为

我有以下查询,基本上将大量数据加载到我的数据库中:

文件 sp500hst-1.txt 的片段是:

该文件大约有 150,000 行长,我有一个“AFTER INSERT”触发器过程,除了表的主要索引之外还有 2 个索引quote

发生的情况是查询持续运行 15 分钟,返回“丢失与服务器的连接”。当我再次运行查询时,它会立即返回成功并影响行数。

我可以理解为什么需要太多时间,但我需要解决的是“与服务器的连接丢失”故障。