【问题标题】:LOAD DATA LOCAL INFILE not importing any recordsLOAD DATA LOCAL INFILE 不导入任何记录
【发布时间】:2018-07-10 18:19:54
【问题描述】:

我正在做一个需要使用 Workbench 将 csv 数据导入 mysql 表的项目。我尝试运行以下命令。我没有收到任何错误,但是没有记录被导入到表中。请注意,我尝试将终止的行更改为 \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)

数据导入.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

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;

【问题讨论】:

    标签: mysql csv mysql-workbench csv-import


    【解决方案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。

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

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


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

    【讨论】:

    • 您好,感谢您的帮助,但他对我不起作用。结果相同,没有导入记录。顺便说一句,我在 Unix 上。
    • 您的数据来源是什么?另外,您在从 MySQL 导入的过程中是否遇到任何错误?我一直这样做...
    • 不,没有来自 MySQL 的错误。不知道你说的数据来源是什么意思。 .csv 文件中的纯文本,如原始帖子所示。
    • 尝试删除“封闭式”。根据您显示的内容,您的所有数据均未包含在引号中...
    • 我可以提出要求吗?发布 SQL 以创建表(节省我在本地重新创建表的时间)。只需右键单击表格,选择复制到剪贴板-> 创建语句即可。我们会一起解决这个问题。
    猜你喜欢
    • 2015-04-17
    • 1970-01-01
    • 1970-01-01
    • 2013-01-14
    • 2013-03-11
    • 2012-10-05
    • 1970-01-01
    • 2013-08-02
    • 2013-01-13
    相关资源
    最近更新 更多