Вот пример SQL-запроса, который выводится в файл через запятую:
SELECT a,b,a+b INTO OUTFILE '/tmp/result.txt'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM test_table;
Комментарии: достаточно справедливо, синтаксис INTO OUTFILE
записывает данные в файл на хосте сервера базы данных, а не на хост, на котором запущен скрипт оболочки и клиент mysql.
Клиент mysql не имеет режима вывода csv, он имеет только табличный формат с черточками и тире (с флагами --table
или -t
), формат с разделителями табуляции (с --batch
или -B
флаги), формат HTML (--html
или -H
) и XML (--xml
или -X
).
Если в вашей базе данных есть содержимое, содержащее вкладки, либо преобразуйте вкладки во что-то другое, используя функцию SQL REPLACE()
, либо выведите в другой формат и попробуйте преобразовать это в csv:
mysql ... --table --skip-column-names |
sed -e 's/ *| */,/g' \
-e 's/^| *//' \
-e 's/ *|$//' \
-e '/^+--/d'