Записать результаты sql-запроса в файл в mysql

Экспорт из MySQL в CSV с помощью командной строки

Вы можете выполнить экспорт без излишеств через CLI, выбрав все данные в таблице и указав место, куда их нужно сохранить.

Начните с открытия оболочки MySQL, затем переключитесь на базу данных, которую вы хотите экспортировать.

Введите следующую команду:

SELECT * FROM myTable 
INTO OUTFILE ' mpmyExportFile.csv' 
FIELDS ENCLOSED BY '"' 
TERMINATED BY ';' 
ESCAPED BY '"' 
LINES TERMINATED BY '';

Замените myTable реальным именем таблицы из вашей базы данных. Вы можете заменить mpmyExportFile.csv любым другим именем файла или местоположением. Не забудьте сохранить имя файла .csv в конце.

Примечание. В этом примере используется местоположение файла Linux. Если вы работаете в Windows, вы можете использовать c:/folder/file.csv для вашего местоположения файла.

Дополнительные параметры для экспорта из MySQL

Чтобы указать отдельные наборы данных для экспорта из таблицы:

SELECT column1, column2, column3, column4 
FROM myTable 
WHERE column2 = 'value';

Замените column1 (и остальные) фактическими именами столбцов, которые вы хотите экспортировать. Обязательно используйте команду FROM, чтобы указать таблицу, из которой вы экспортируете. Оператор WHERE является необязательным и позволяет экспортировать только те строки, которые содержат определенное значение. Замените значение фактическим значением, которое вы хотите экспортировать. Например:

SELECT order_date, order_number, order_status 
FROM current_orders 
WHERE order_status='pending';
<Экспорт и временная метка (timestamp) CSV-файла

Используйте следующую команду для экспорта в файл CSV и добавьте метку времени для времени создания файла:

SET @TS = DATE_FORMAT(NOW(),'_%Y_%m_%d_%H_%i_%s'); 
SET @FOLDER = ' mp'; 
SET @PREFIX = 'myTable'; 
SET @EXT = '.csv'; 
SET @CMD = CONCAT("SELECT * FROM myTable INTO OUTFILE '",@FOLDER,@PREFIX,@TS,@EXT, "' FIELDS ENCLOSED BY '"' TERMINATED BY ';' ESCAPED BY '"'"," LINES TERMINATED BY ' ';"); PREPARE statement FROM @CMD; EXECUTE statement;

Как обычно, замените myTable реальным именем экспортируемой таблицы.

Примечание: вы можете заметить команду SELECT * FROM в скобках. Мы обернули команду в функцию, которая добавляет метку времени.

Экспорт с заголовками столбцов

Используйте оператор UNION для добавления заголовков столбцов в экспортируемый файл:

(SELECT 'column1','column2','column3','column4') 
UNION (SELECT column1, column2, column3, column4 
FROM myTable 
INTO OUTFILE ' mpmyExportFile.csv' 
FIELDS ENCLOSED BY '"' TERMINATED BY ';' ESCAPED BY '"' 
LINES TERMINATED BY ' ')
Работа с пустыми значениями

Если в базе данных есть нулевые (пустые) значения, этот процесс экспортирует их как букву N. Вы можете заменить значения NULL другой строкой текста, которая имеет больше смысла:SELECT column1, column2, IFNULL(column3, ‘N/A’) FROM myTable INTO OUTFILE ‘ mpmyExportFile.csv’ FIELDS ENCLOSED BY ‘»‘ TERMINATED BY ‘;’ ESCAPED BY ‘»‘ LINES TERMINATED BY ‘);

В этом случае команда IFNULL ищет пустые значения в column3. Когда он находит их, он заменяет их текстовой строкой N/A.

Но иногда может выдавать ошибку

ERROR 1290 (HY000) at line 1: The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

Тогда можно воспользоваться командой 

 mysql -u root -p my_db < /tmp/113183.txt | sed "s/'/\'/;s/\t/\",\"/g;s/^/\"/;s/$/\"/;s/\n//g" > /tmp/o_113183.csv

Тогда файл o_113183.csv будет готов для открытия его в excel. 

Источник: https://wiki.merionet.ru/articles/eksport-i-import-csv-v-mysql

Was this helpful?

0 / 0