web-dev-qa-db-fra.com

Pipe gunzip et mysql pour gunzip un dump et l'importer

J'ai un fichier de vidage .gz sql (exemple: foo.sql.gz) que je veux importer dans ma base de données avec la commande classique mysql.

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

mysql -uroot -ppassword foo < foo.sql

foo est la base de données.

Comment puis-je diriger ces deux commandes en une seule?

A tenté

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

mais ne semble pas fonctionner; je reçois gzip: stdout: Broken pipe

27
apelliciari
zcat foo.sql.gz | mysql -uroot -ppassword foo

Cela laissera également foo.sql.gz tel quel.

38
Nifle

Pour ceux qui utilisent Max OSX, il existe n bogue avec zcat. Vous devez donc utiliser gzcat à la place.

gzcat foo.sql.gz | mysql -uroot -ppassword foo
12
SammyK

Toutes les autres réponses recommandent d'écrire le mot de passe dans la commande. C'est une très mauvaise pratique et pose des risques de sécurité. S'il vous plaît NE PAS FAIRE ça.

Vous pouvez laisser le mot de passe vide dans la commande, elle vous demandera de saisir le mot de passe de manière interactive. De cette façon, le mot de passe n'est pas enregistré dans l'historique bash.

gunzip < dump.sql.gz | mysql -u username -p databasename
2
Елин Й.