Como exportar / despejar uma tabela MySQL em um arquivo de texto incluindo os nomes de campo (aka cabeçalhos ou nomes de colunas)

StackOverflow https://stackoverflow.com/questions/262924

  •  06-07-2019
  •  | 
  •  

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

Foi útil?

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

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

- 3. Criar a consulta

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

- 4. executar a consulta

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 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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top