"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso exportar em massa todas as tabelas MySQL para arquivos CSV usando `mysql` e `sed`?

Como posso exportar em massa todas as tabelas MySQL para arquivos CSV usando `mysql` e `sed`?

Publicado em 2024-12-22
Navegar:154

How Can I Bulk Export All MySQL Tables to CSV Files Using `mysql` and `sed`?

Exportação CSV em massa com 'mysqldump'

No domínio do gerenciamento de dados MySQL, exportar o conteúdo da tabela para o formato CSV pode ser uma tarefa crucial . Embora 'mysqldump' seja um utilitário poderoso para backups de banco de dados, falta-lhe a opção de exportar exclusivamente todas as tabelas como CSV. Este artigo explora uma abordagem alternativa para fazer isso usando uma combinação de 'mysql' e pós-processamento.

'mysql' com parâmetro '-B'

O ponto crucial da nossa solução reside em aproveitar o parâmetro '-B' no utilitário 'mysql'. Este parâmetro instrui o programa a exibir os resultados em um formato delimitado por tabulações. Ao canalizar a saída por meio de 'sed', podemos manipular ainda mais os dados para criar um arquivo CSV com cabeçalhos.

Iteração de script Bash

Para exportar todas as tabelas em um banco de dados, podemos utilizar um script Bash para percorrer a lista de nomes de tabelas. Uma abordagem é combinar os seguintes comandos:

mysql -u username -ppassword dbname -sN -e "SHOW TABLES;" | \
for tb in $(mysql -u username -ppassword dbname -sN -e "SHOW TABLES;"); do
    mysql -B -u username -p password database -h dbhost -e "SELECT * FROM $tb;" \
    | sed “s/”/\””/g;s/'/\'/;s/\t/\”,\”/g;s/^/\”/;s/$/\”/;s/\n//g” > "$tb.csv"
done

Este script primeiro recupera a lista de tabelas usando 'SHOW TABLES' e a armazena na variável 'tb'. Em seguida, ele itera sobre cada nome de tabela e executa uma consulta 'SELECT *' com o parâmetro '-B'. A saída resultante é processada por 'sed' e armazenada em um arquivo CSV com o nome da tabela.

Conclusão

Combinando o parâmetro '-B' de 'mysql ' e pós-processamento 'sed', podemos exportar efetivamente todas as tabelas em um banco de dados MySQL para o formato CSV. Esta abordagem contorna as limitações do 'mysqldump' e fornece maior flexibilidade na manipulação dos dados de saída.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3