MySQL加载数据忽略行 - 如果(可选)括起来设置

时间:2014-07-14 10:11:58

标签: mysql csv load-data-infile

我会将CSV文档中的一百万行导入数据库表。

为了快速完成这项工作,我使用了MySQL加载数据infile。

问题在于一切都运行得非常好! 但是线条存在问题,可选择用"。

包围

CSV文件。

Name|Value\n
Anna|\n
Ben |Test\n
Chip|"My ""special"" value"\n
Deny|"I" like it\n
East|You not\n

MySQL命令。

LOAD DATA LOCAL INFILE 'test.csv'
INTO TABLE `test`
    FIELDS TERMINATED BY '|'
    ENCLOSED BY '"'
    LINES TERMINATED BY "\n"
    IGNORE 1 LINES
(`name`, @value)
    SET
        `value` = nullif(@value, '')
;

结果。

Query OK, 4 rows affected, 1 warning (0.17 sec)
Records: 4  Deleted: 0  Skipped: 0  Warnings: 1

警告。

+---------+------+--------------------------------------------+
| Level   | Code | Message                                    |
+---------+------+--------------------------------------------+
| Warning | 1265 | Data truncated for column 'value' at row 4 |
+---------+------+--------------------------------------------+

表格。

+----+------+------------------------+
| id | name | value                  |
+----+------+------------------------+
|  1 | Anna | NULL                   |
|  2 | Ben  | Test                   |
|  3 | Chip | My "special" value     |
|  4 | Deny | "I" like it
East|You  |
+----+------+------------------------+

如何解决?

请注意:

我的问题不是警告!

如果您看到:csv文件包含6行和5行。 (没有标题) 另外我在mysql表中需要5行/条目。我只有4个条目。

2 个答案:

答案 0 :(得分:0)

您的csv文件无效:第5行包含" - char(根据RFC-4180)

  • 该字段必须用双引号和
  • 包围
  • 字段内的引号必须重复

使用此功能,您可以通过将其修改为

来成功导入csv
Name|Value
Anna|
Ben |Test
Chip|"My ""special"" value"
Deny|"""I"" like it"
East|You not

答案 1 :(得分:-1)

这个数据被截断为列'值'在第4行警告消息表明您的字段值大于您指定的大小。因此,您必须将varchar的大小增加到值的最大长度。