Como exportar / despejar uma tabela MySQL em um arquivo de texto incluindo os nomes de campo (aka cabeçalhos ou nomes de colunas)
Pergunta
O intérprete de no MySQL, é muito fácil para despejar uma tabela para a tela juntamente com os seus nomes de campo.
Não parece haver nenhuma maneira simples de exportar uma tabela para um ou delimted-guia CSV outfile incluindo seus cabeçalhos de coluna.
Eu estou tentando fazer isso usando apenas SQL ou a linha de comando do Linux, sem escrever um programa em outro idioma.
Obrigado
Solução
A tubulação a consulta para o cliente de linha de comando gera um guia lista separada com os nomes das colunas como a primeira linha
$ 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
Outras dicas
Este pequeno script deve fazê-lo:
- 1. Escolha a tabela e o arquivo de saída aqui / esta deve ser a única entrada
select 'mytable' into @tableName;
select 'c://temp/test.csv' into @outputFile;
- 2. obter os nomes das colunas em um formato que vai caber a consulta ??p>
select group_concat(concat("'",column_name, "'")) into @columnNames from information_schema.columns
where table_name=@tableName;
- 3. Criar a consulta ??p>
SET @query = CONCAT(
"select * from
((SELECT ",@columnNames,")
UNION
(SELECT * FROM `",@tableName,"`)) as a
INTO OUTFILE '", @outputFile, "'");
- 4. executar a consulta ??p>
PREPARE stmt FROM @query;
EXECUTE stmt;
Eu consegui que desta forma:
echo "select * from table"| mysql database -B -udbuser -puser_passwd | sed s/\\t/,/g > query_output.csv
A opção de -B mysql separa as colunas por abas, que são convertidos em vírgulas usando sed. Note que os cabeçalhos são gerados também.
Você pode fazer isso com o href="http://dev.mysql.com/doc/refman/5.0/en/mysqldump.html" rel="nofollow noreferrer"> mysqldump comando . Ter um olhar para as opções --tab e --xml.
Eu criei um procedimento para automatizar a exportação do conteúdo de um maior número de mesas para .csv usando SELECT ... INTO OUTFILE
. Por favor, consulte o seguinte se você tem necessidade de algo como isto
http://lifeboysays.wordpress.com/2012/06/23/mysql-how-to-export-data-to-csv-with-column-headers/ .
Ele usa o método descrito por cafe876, mas vai trabalhar para um ou uma série de tabelas, e você pode definir o caractere delimitador e Citação para ser usado.
Eu usei o comando acima e modificado de acordo com a minha obrigação.
Eu precisava para obter senhas coluna do banco de dados wordpress mysql em um arquivo de texto, para fazer isso eu usei o seguinte comando abaixo
echo "select user_pass from wp_users"| mysql -uroot -proot wp_database > passwordList.txt