Pipe gunzip e mysql para gunzip um dump e importá-lo

24

Eu tenho um arquivo de despejo sql .gz (exemplo: foo.sql.gz) que eu quero importar no meu banco de dados com o comando mysql clássico.

gunzip -c foo.sql.gz > foo.sql

mysql -uroot -ppassword foo < foo.sql

foo é o banco de dados.

Como posso canalizar esses dois comandos em um único?

Tentei

gunzip -c foo.sql.gz | mysql -uroot -ppassword foo

mas não parece funcionar; Eu recebo gzip: stdout: Broken pipe

    
por apelliciari 19.03.2012 / 12:55

3 respostas

36
zcat foo.sql.gz | mysql -uroot -ppassword foo

Isso também deixará foo.sql.gz como está.

    
por 19.03.2012 / 13:53
11

Para aqueles que estão no Max OSX, há um bug com zcat , então você precisará usar gzcat .

gzcat foo.sql.gz | mysql -uroot -ppassword foo
    
por 30.03.2012 / 18:29
0

Todas as outras respostas recomendam escrever a senha no comando. Esta é uma prática muito ruim e apresenta riscos de segurança. Por favor, não faça isso.

Você pode deixar a senha vazia no comando, do que lhe pedirá para inserir a senha interativamente. Desta forma, a senha não é salva no histórico bash.

gunzip < dump.sql.gz | mysql -u username -p databasename
    
por 08.12.2017 / 08:22