LOAD DATA LOCAL INFILE 不导入任何记录

Anc*_*end 3 mysql csv mysql-workbench csv-import

我正在处理一个需要使用 Workbench 将 csv 数据导入 mysql 表的项目。我尝试运行下面的命令。我没有收到任何错误,但是没有记录被导入到表中。请注意,我尝试更改以 to 结尾的行\n,也尝试了\r,这导致了相同的结果。

我感谢有关如何解决的任何建议。

这是我试过的查询:

LOAD DATA LOCAL INFILE 'data-to-import.csv' INTO TABLE db.t1
COLUMNS TERMINATED BY ','
LINES TERMINATED BY '\r\n' 
IGNORE 1 LINES
(id,age,spns,pns,spns2,sns,ps,ss,gid,term,band)
Run Code Online (Sandbox Code Playgroud)

数据导入.csv

 ,18,0.455,0.62,0.774,1.083,2.408,3.702,1,10,1
 ,19,0.455,0.62,0.774,1.083,2.408,3.702,1,10,1
 ,20,0.455,0.62,0.774,1.083,2.408,3.702,1,10,1
 ,21,0.455,0.62,0.774,1.083,2.408,3.702,1,10,1
 ,22,0.455,0.62,0.774,1.083,2.408,3.702,1,10,1
 ,23,0.455,0.62,0.774,1.083,2.408,3.702,1,10,1
 ,24,0.455,0.62,0.774,1.083,2.408,3.702,1,10,1
 ,25,0.455,0.62,0.774,1.083,2.408,3.702,1,10,1
 ,26,0.455,0.62,0.774,1.083,2.408,3.702,1,10,1
 ,27,0.455,0.62,0.774,1.083,2.408,3.702,1,10,1
 ,28,0.455,0.62,0.774,1.088,2.416,3.702,1,10,1
 ,29,0.455,0.62,0.792,1.121,2.489,3.702,1,10,1
Run Code Online (Sandbox Code Playgroud)

db.t1 定义

   CREATE TABLE `t1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `age` int(11) NOT NULL,
  `spns` decimal(4,4) NOT NULL,
  `pns` decimal(4,4) NOT NULL,
  `spns2` decimal(4,4) NOT NULL,
  `sns` decimal(4,4) NOT NULL,
  `ps` decimal(4,4) NOT NULL,
  `ss` decimal(4,4) NOT NULL,
  `gid` int(11) NOT NULL,
  `term` int(11) DEFAULT NULL,
  `band` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Run Code Online (Sandbox Code Playgroud)

Men*_*ian 5

在查看您的 SQL 时,您的行终止符似乎有问题。

尝试这个:

LOAD DATA LOCAL INFILE 'data-to-import.csv' INTO TABLE db.t1
COLUMNS TERMINATED BY ','
ENCLOSED BY '"' 
LINES TERMINATED BY '\r\n' 
IGNORE 1 LINES
(id,age,spns,pns,spns2,sns,ps,ss,gid,term,band)
Run Code Online (Sandbox Code Playgroud)

如果您的文件来自 Windows,则行终止符是 CR/LF。你把它当作 LF/CR。

如果文件来自 *nux,则行终止符只是一个换行符,在这种情况下,您的 SQL 将如下所示:

LOAD DATA LOCAL INFILE 'data-to-import.csv' INTO TABLE db.t1
COLUMNS TERMINATED BY ','
ENCLOSED BY '"' 
LINES TERMINATED BY '\n' 
IGNORE 1 LINES
(id,age,spns,pns,spns2,sns,ps,ss,gid,term,band)
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!


我刚刚运行了以下代码:

drop schema if exists db;
create schema db;
use db;

CREATE TABLE `t1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `age` int(11) NOT NULL,
  `spns` decimal(4,4) NOT NULL,
  `pns` decimal(4,4) NOT NULL,
  `spns2` decimal(4,4) NOT NULL,
  `sns` decimal(4,4) NOT NULL,
  `ps` decimal(4,4) NOT NULL,
  `ss` decimal(4,4) NOT NULL,
  `gid` int(11) NOT NULL,
  `term` int(11) DEFAULT NULL,
  `band` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

LOAD DATA LOCAL INFILE 'c:/temp/data-to-import.csv' INTO TABLE db.t1
COLUMNS TERMINATED BY ','
LINES TERMINATED BY '\r\n' 
IGNORE 1 LINES
(id,age,spns,pns,spns2,sns,ps,ss,gid,term,band);

SELECT * FROM t1;
Run Code Online (Sandbox Code Playgroud)

我从您发布的内容中复制了数据并将其放入我的临时文件夹中。工作得很好。

首先,你发布的数据没有标题行,所以我不确定你为什么在那里有 IGNORE 1 LINES。

此外,尝试像我一样在文件名上放置一个路径,看看是否有效。

如果没有,请告诉我文件的来源。它仍然可能是行终止符问题。


好的,根据我们的聊天,您在 Mac OSX 上运行,行终止符是 '\r'。只需使用它,您就可以开始使用了。