LOAD DATA LOCAL INFILE不导入任何记录

时间:2018-01-31 15:20:11

标签: mysql csv mysql-workbench csv-import

我正在开发一个需要使用Workbench将csv数据导入mysql表的项目。我尝试运行下面的命令。我没有收到任何错误,但是没有记录导入到表中。请注意,我尝试将已终止的行更改为import memoize from 'lodash.memoize'; const cache = memoize(req => { return fetch(req).then(response => { return response; }); }, req => req.url); function cacheFetch(input, init) { return cache(new Request(input, init)).then(response => response.clone()); } export default cacheFetch; ,同时尝试\n,结果相同。

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

这是我试过的查询:

\r

数据对import.csv

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)

db.t1定义

 ,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

1 个答案:

答案 0 :(得分:1)

在查看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)

如果您的文件来自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)

希望这有帮助!

我刚刚运行了以下代码:

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;

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

首先,你发布的数据没有标题行,所以我不知道你为什么会有IGNORE 1 LINES。

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

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

好的,基于我们的聊天,您在Mac OSX上运行,并且行终止符是' \ r'。只要使用它,你就应该好好去。