segunda-feira, 1 de abril de 2013

Exportar do MYSQL para CSV na linha de comando

Bom segue o comando abaixo que fará a consulta e retornará num arquivo csv separado por " (aspas duplas) e , (vírgula)


mysql -uusuario -psenha banco_de_dados -B -e "select * from \`tabela\`;" | sed 's/\t/","/g;s/^/"/;s/$/"/' > arquivo.csv

Substitua as palavras "usuário", "senha", "banco_de_dados" e "arquivo" pelas informações corretas de seu sistema

O resultado saíra no formato abaixo:

"id","username","group","password"
"1","tux","admin","5f4dcc3b5aa765d61d8327deb882cf99"
"2","tlugian","admin","5f4dcc3b5aa765d61d8327deb882cf99"
"3","saiyuki","admin","5f4dcc3b5aa765d61d8327deb882cf99"
"4","fred","staff","5f4dcc3b5aa765d61d8327deb882cf99"
"5","barney","staff","5f4dcc3b5aa765d61d8327deb882cf99"
"6","wilma","admin","5f4dcc3b5aa765d61d8327deb882cf99"

No comando MYSQL temos a opção "-uusuario" onde informamos a o usuario logo após a opção "-u" e o mesmo acontece com a senha "-psenha", após essas opções informamos o banco de dados onde faremos a consulta.

A opção -B delimitará os dados usando tabs e colocará cada resultado em uma nova linha.
A opção -e orá executar o comando e, aspas que no nosso caso fpo o select. Inclusive aqui você pode modifica-lo tambem usando a clausula WHERE e etc.

Depois filtramos pro comando sed e formatamos o arquivos


s/\t/","/g;s/^/"/     -> Substituirá todos os tabs por "," (virgula).

;s/$/"/    -> Coloca as aspas duplas " no começo da linha.

E por último direcionamos tudo para o arquivo.csv

Obs.: Fiz uma alteração removendo um comando do sed desnecessário.


Fonte: http://tlug.dnho.net/node/209

Nenhum comentário:

Postar um comentário