Você normalmente salva a saída detalhada de um comando Linux como este:
# command > output.txt
Mas quando você usa um comando como mysqldump
, a >
opção gera o dump das tabelas do banco de dados para o arquivo desejado:
# mysqldump --username=whatever --password=whatever -h localhost database > dump.sql
Se você adicionar a -v
opção (verbose) a mysqldump
, ela exibirá informações de ajuda sobre o que o comando está fazendo. Como faço para salvar essa saída detalhada em um arquivo, pois a >
opção é usada para enviar as informações da tabela do banco de dados para um arquivo?
Mais especificamente, estou despejando a saída de um banco de dados em outro banco de dados assim:
mysqldump -alv -h 123.123.123.123 --user=username --password=p@ssw0rd --add-drop-table databasename | mysql --user=username --password=p@ssw0rd -h localhost localdatabase
Eu tentei o seguinte, mas o arquivo de saída estava vazio no final
mysqldump -alv -h 123.123.123.123 --user=username --password=p@ssw0rd --add-drop-table databasename | mysql --user=username --password=p@ssw0rd -h localhost localdatabase > output.log
Também tentei o seguinte, mas redirecionou as informações do banco de dados para o output.log em vez do banco de dados de destino:
mysqldump -alv -h 123.123.123.123 --user=username --password=p@ssw0rd --add-drop-table databasename > output.log | mysql --user=username --password=p@ssw0rd -h localhost localdatabase
E eu não vejo qualquer tipo de --log-file=FILE
opção para mysqldump
qualquer um.
Seu primeiro mysqldump cria estruturas de tabela e INSERTs e coloca em dump.sql.
Seu segundo dump é um dump remoto que é canalizado diretamente para o mysql em localhost.
Se você estiver tentando capturar qualquer saída com base em erros, tente isto:
O uso
2>
capturará qualquer saída baseada em erro (também conhecida como stderr). O mysqldump ainda deve canalizar a saída normal do console (também conhecido como stdout) para a outra sessão mysql e carregar os dados conforme pretendido.EXEMPLO: Eu tenho um pequeno banco de dados chamado sample no meu PC.
Eu corri isso:
De uma chance !!!
mysqldump -v sai para o fluxo stderr, então você só precisa redirecionar isso
exemplo