Как экспортировать/выгрузить таблицу MySql в текстовый файл, включая имена полей (также имена заголовков или столбцов)
В интерпретаторе MySql очень легко выгрузить таблицу на экран вместе с именами полей.
Кажется, нет простого способа экспортировать таблицу в файл с разделителями табуляции или CSV, включая заголовки столбцов.
Я пытаюсь сделать это, используя только SQL или командную строку Linux, без написания программы на другом языке.
Спасибо
Ответы
Ответ 1
Выполнение запроса клиенту командной строки выводит список, разделенный вкладками, с именами столбцов в качестве первой строки
$ echo "select * from surveys limit 5" | mysql -uroot -pGandalf surveys
phone param1 param2 param3 param4 p0 p1 p2 p3 audio4 code time
XXXXXXXXX 2008-07-02 11:17:23 XXXXXXXX SAT - - - - - ERROR 2008-07-02 12:18:32
XXXXXXXXX 2008-07-02 11:22:52 XXXXXXXX SAT - - - - - COLGADO 2008-07-02 12:04:29
XXXXXXXXX 2008-07-02 11:41:29 XXXXXXXX SAT - - - - - COLGADO 2008-07-02 12:07:22
XXXXXXXXX 2008-07-02 12:16:19 XXXXXXXX SAT 1 1 1 9 XXXXXXXXX_4.wav OK 2008-07-02 16:14:27
XXXXXXXXX 2008-07-02 08:21:25 XXXXXXXX SAT 1 1 1 1 XXXXXXXXX_4.wav OK 2008-07-02 12:29:40
Ответ 2
Этот маленький script должен сделать это:
- 1. выберите таблицу и выходной файл здесь/это должен быть единственный вход
select 'mytable' into @tableName;
select 'c://temp/test.csv' into @outputFile;
- 2. получить имена столбцов в формате, который будет соответствовать запросу
select group_concat(concat("'",column_name, "'")) into @columnNames from information_schema.columns
where [email protected];
- 3. постройте запрос
SET @query = CONCAT(
"select * from
((SELECT ",@columnNames,")
UNION
(SELECT * FROM `",@tableName,"`)) as a
INTO OUTFILE '", @outputFile, "'");
- 4. выполните запрос
PREPARE stmt FROM @query;
EXECUTE stmt;
Ответ 3
Я достиг этого так:
echo "select * from table"| mysql database -B -udbuser -puser_passwd | sed s/\\t/,/g > query_output.csv
Параметр -B mysql разделяет столбцы на вкладки, которые преобразуются в запятые, используя sed. Обратите внимание, что заголовки также создаются.
Ответ 4
Вы можете сделать это с помощью команды mysqldump. Посмотрите параметры --tab и --xml.
Ответ 5
Я использовал указанную выше команду и изменил в соответствии с моим требованием.
Мне нужно было получить столбец паролей из базы данных wordpress mysql в текстовом файле, чтобы сделать это, я использовал следующую команду
echo "select user_pass from wp_users"| mysql -uroot -proot wp_database > passwordList.txt
Ответ 6
Я создал процедуру для автоматизации экспорта содержимого большего количества таблиц в CSV файл с помощью SELECT ... INTO OUTFILE
. Пожалуйста, обратитесь к следующему, если вам нужно что-то вроде этого
http://lifeboysays.wordpress.com/2012/06/23/mysql-how-to-export-data-to-csv-with-column-headers/.
Он использует метод, описанный cafe876, но будет работать для одной или целой серии таблиц, плюс вы можете установить разделитель и символ кавычки, который будет использоваться.