30 votes

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

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

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

mysql -uroot -ppassword foo < foo.sql

foo est la base de données.

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

Essayé

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

mais cela ne semble pas fonctionner ; j'obtiens gzip: stdout: Broken pipe

7 votes

Pour votre information, vous ne devez vraiment pas passer le mot de passe mysql sur la ligne de commande. Cela conduit à ce qu'il soit stocké dans ~/.bash_history pour que tout le monde puisse le voir. Si vous mettez simplement -p, il vous demandera d'entrer votre mot de passe, ce qui est beaucoup plus sûr (et ne casse pas non plus le pipe zcat).

1 votes

Votre commande orignale fonctionnerait si gunzip < foo.sql.gz | mysql -uroot -ppassword foo

42voto

user2013 Points 2301
zcat foo.sql.gz | mysql -uroot -ppassword foo

Cela laissera également foo.sql.gz tel qu'il est.

1 votes

En termes de vitesse, cela fonctionne beaucoup plus lentement que gunzip && mysql -e "use unzipped.sql".

14voto

RoboJ1M Points 682

Pour les utilisateurs de Max OSX, il existe un bug avec zcat vous devrez donc utiliser gzcat à la place.

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

9voto

Елин Й. Points 161

Toutes les autres réponses recommandent d'écrire le mot de passe dans la commande. C'est une très mauvaise pratique qui présente des risques pour la sécurité. Veuillez consulter NE PAS FAIRE que.

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

gunzip < dump.sql.gz | mysql -u username -p databasename

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X