Подтвердить что ты не робот

Как экспортировать/выгрузить таблицу MySql в текстовый файл, включая имена полей (также имена заголовков или столбцов)

В интерпретаторе MySql очень легко выгрузить таблицу на экран вместе с именами полей.

Кажется, нет простого способа экспортировать таблицу в файл с разделителями табуляции или CSV, включая заголовки столбцов.

Я пытаюсь сделать это, используя только SQL или командную строку Linux, без написания программы на другом языке.

Спасибо

4b9b3361

Ответ 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, но будет работать для одной или целой серии таблиц, плюс вы можете установить разделитель и символ кавычки, который будет использоваться.