[ACCEPTED]-How to export / dump a MySql table into a text file including the field names (aka headers or column names)-field

Accepted answer
Score: 21

Piping the query to the commandline client 2 outputs a tab separated list with the column 1 names as the first line

$ 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
Score: 9

This little script should do it:

-- 1. choose 4 the table and the output file here / this 3 should be the only input

select 'mytable' into @tableName;
select 'c://temp/test.csv' into @outputFile;

-- 2. get the column 2 names in a format that will fit the query

select group_concat(concat("'",column_name, "'")) into @columnNames from information_schema.columns
where table_name=@tableName;

-- 3. build 1 the query

SET @query = CONCAT(
"select * from
((SELECT ",@columnNames,")
UNION
(SELECT * FROM `",@tableName,"`)) as a
INTO OUTFILE '", @outputFile, "'");

-- 4. execute the query

PREPARE stmt FROM @query;
EXECUTE stmt;
Score: 3

I achieved that in this way:

echo "select * from table"| mysql database -B -udbuser -puser_passwd | sed s/\\t/,/g > query_output.csv

The -B option 3 of mysql separates the columns by tabs, which 2 are converted into commas using sed. Note 1 that the headers are generated too.

Score: 1

You can do this with the mysqldump command. Have 1 a look at the --tab and --xml options.

Score: 0

I have created a procedure to automate the 8 exporting of the contents of a larger number 7 of tables to .csv file by using SELECT ... INTO OUTFILE. Please 6 refer to the following if you have need 5 for something like this

http://lifeboysays.wordpress.com/2012/06/23/mysql-how-to-export-data-to-csv-with-column-headers/.

It uses the method 4 described by cafe876, but will work for 3 one or a whole series of tables, plus you 2 can set the delimiter and quote character 1 to be used.

Score: 0

I used the above command and modified according to my requirement.
I needed to get passwords column from the wordpress mysql database in a text file , to do that i used the following below command

echo "select user_pass from wp_users"| mysql -uroot -proot wp_database > passwordList.txt

0

More Related questions