Импорт CSV с использованием проблемы с кавычками LOAD DATA INFILE - PullRequest
4 голосов
/ 11 августа 2011

Я пытаюсь загрузить этот CSV-файл, который я экспортировал из Excel, в мою базу данных, и мне не удается правильно отформатировать формат независимо от того, что я пытаюсь.

Вот SQL:

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

Это работает нормально, но у меня возникают проблемы, когда конец строки (столбец 3) заканчивается кавычкой.Например:

Фактическое значение: These are "quotes"

Значение в CSV: "These are ""quotes"""

В результате я получу дополнительную цитату по этому значению в базе данных.а также любые дополнительные строки, пока он не достигнет другой цитаты в CSV.Есть идеи, как решить эту проблему?

1 Ответ

9 голосов
/ 11 августа 2011

Хм. Я пытался дублировать эту проблему, но не могу. Где мои данные отличаются от ваших? Можете ли вы предоставить пример данных, чтобы дублировать это? Вот что я сделал:

> 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' вместо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...