我会将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个条目。
答案 0 :(得分:0)
您的csv文件无效:第5行包含"
- char(根据RFC-4180)
使用此功能,您可以通过将其修改为
来成功导入csvName|Value
Anna|
Ben |Test
Chip|"My ""special"" value"
Deny|"""I"" like it"
East|You not
答案 1 :(得分:-1)
这个数据被截断为列'值'在第4行警告消息表明您的字段值大于您指定的大小。因此,您必须将varchar的大小增加到值的最大长度。