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

标签 mysql excel csv

我正在尝试将从 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); 

这很好用,但是当行尾(第 3 列)以引号结尾时,我遇到了麻烦。例如:

实际值:这些是“引号”

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

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

最佳答案

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

> 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)

我觉得还好(?)

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

关于mysql - 使用 LOAD DATA INFILE 引用问题导入 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7019506/

相关文章:

mysql - 如何使用条件更新数据库表中的值?

php - 尝试在 phpmyadmin 中设置外键

python - 在 MySql 中存储文本文件数据,时间戳在引号 ""中,并且有一些缺失的数据值

mysql - 返回mysql查询的列名

mysql - 选择性查询

在 rstudio 中从 excel 中读取一张表

excel - 如何仅使用空格而不使用句点作为分隔符来拆分单元格

excel - 清除单元格内容

java - MySQL,从已解析文件加载数据的最有效方式

mysql - 从 MySql 表中选择并删除 x 行