Экспорт из 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