Как экспортировать файл CSV из командной строки MySQL - PullRequest
0 голосов
/ 17 февраля 2020

У меня есть MySQL база данных, содержащая одну таблицу, которая используется в качестве временной точки хранения для манипулирования и запроса наборов данных и периодически удаляется и заменяется новыми данными. То, что я хотел бы сделать, это экспортировать данные из командной строки MySQL для использования в других целях. Я использую серверный пакет XAMPP Apache с phpMyAdmin на Windows 10.

У меня проблема с синтаксисом INTO OUTFILE, который я использую, возвращает ошибку, связанную с '\ n'. Ниже приведен пример синтаксиса:

SELECT *  
FROM tablename  
WHERE work_complete = 'Yes' 
INTO OUTFILE 'C:\file path for the file to be exported to\file_name.csv'   
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY "''"   
ESCAPED BY '\'  
LINES TERMINATED BY '\n'; 

Я потратил некоторое время на изучение этого без какой-либо удачи, я даже пытался использовать

LINES TERMINATED BY '\r\n'

, но ошибка осталась прежней

ERROR: Unknown command '\''.
   ->     LINES TERMINATED BY '\r\n';

Если кто-нибудь может дать какие-либо советы, которые будут высоко оценены.

Ответы [ 2 ]

0 голосов
/ 17 февраля 2020

Используйте это

SELECT *  
FROM tablename  
#WHERE work_complete = 'Yes' 
INTO OUTFILE 'C:\file path for the file to be exported to\file_name.csv'   
FIELDS ENCLOSED BY '"' 
TERMINATED BY ';' 
ESCAPED BY '"' 
LINES TERMINATED BY '\r\n';

Я использовал другой синтаксис как вы и удалил ОПЦИОНАЛЬНО, который mysql не нравится в этом месте

0 голосов
/ 17 февраля 2020

Проблема не в LINES TERMINATED BY, а в ESCAPED BY.

Это:

ESCAPED BY '\'  

Недопустимый синтаксис, поскольку обратная косая черта sh интерпретируется как escape-символ для следующей цитаты. Приличный текстовый редактор должен позволить вам видеть это.

Вам нужно экранировать backsla sh, например так:

ESCAPED BY '\\'  

В качестве альтернативы, вы также можете использовать '\b':

ESCAPED BY '\b'  

Другая проблема заключается в том, что OPTIONALLY ENCLOSED принимает только один символ, а вы ставите ему две одинарные кавычки.

В вашем запросе:

SELECT *  FROM tablename WHERE work_complete = 'Yes' 
INTO OUTFILE 'C:\file path for the file to be exported to\file_name.csv'   
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY "'" ESCAPED BY '\\'  
LINES TERMINATED BY '\n'
...