使用LOAD DATA INFILE引用问题导入CSV

Van*_*ssa 4 mysql csv excel

我正在尝试将我从excel导出的CSV文件加载到我的数据库中,无论我尝试什么,我似乎都无法正确格式化.

这是SQL:

LOAD DATA INFILE 'path/file.csv'
INTO TABLE tbl_name 
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"' 
LINES TERMINATED BY '\n' 
(column1, column2, column3); 
Run Code Online (Sandbox Code Playgroud)

这很好但是当一行(第3列)的末尾以引号结束时我遇到了麻烦.例如:

实际价值: These are "quotes"

CSV中的值: "These are ""quotes"""

会发生的是,我会在数据库中获得该值的额外报价以及任何其他行,直到它到达CSV中的另一个报价.关于如何解决这个问题的任何想法?

Cas*_*per 9

嗯.我试图复制这个问题,但不能.我的数据与您的数据有何不同?你能提供样本数据来复制吗?这是我做的:

> cat /tmp/data.csv
"aaaa","bbb ""ccc"" ddd",xxx
xxx,yyy,"zzz ""ooo"""
foo,bar,baz

mysql> CREATE TABLE t2 (a varchar(20), b varchar(20), c varchar(20));
Query OK, 0 rows affected (0.01 sec)

mysql> LOAD DATA INFILE '/tmp/data.csv' INTO TABLE t2 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' (a, b, c);
Query OK, 3 rows affected (0.00 sec)
Records: 3  Deleted: 0  Skipped: 0  Warnings: 0

mysql> select * from t2;
+------+---------------+-----------+
| a    | b             | c         |
+------+---------------+-----------+
| aaaa | bbb "ccc" ddd | xxx       |
| xxx  | yyy           | zzz "ooo" |
| foo  | bar           | baz       |
+------+---------------+-----------+
3 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

对我来说没问题(?)

另请注意,如果您在Windows平台上工作,则可能需要使用
LINES TERMINATED BY '\r\n'.

  • 非常感谢你!问题是我需要使用`LINES TERMINATED BY'\ r \n'. (2认同)