Запрос MySQL для вывода вывода в формате CSV на стандартный вывод

Я хочу сделать следующее mysql -uuser -ppass -h remote.host.tld database < script.sql

где script.sql содержит следующее

SELECT *
FROM webrecord_wr25mfz_20101011_175524
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"' 
LINES TERMINATED BY '\n'

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

Если бы я мог просто перенаправить стандартный вывод в файл, это было бы денди.

Ответ 1

Попробуйте следующее: mysql -uuser -ppass -h remote.host.tld database < script.sql 2> blah.csv

Это перенаправит stderr

Ответ 2

Частично повторяющийся вопрос к MySQL SELECT INTO OUTFILE на другом сервере. FIELDS TERMINATED BY не могут быть использованы без into outfile

Альтернатива (не такая элегантная) - использовать --batch для получения вывода с разделением табуляцией и вывода стандартного вывода. Что-то вроде этого:

mysql --batch -uuser -ppass -h remote.host.tld database < stack.sql | sed 's/\t/,/g' > blah.csv

Имейте в --batch что --batch экранирует специальные символы, поэтому в зависимости от --batch у вас данных и их предсказуемости может потребоваться изменить sed