Même en ignorant le côté gzip de la question, votre flèche indique le mauvais sens ...
Matt Fletcher
Réponses:
238
zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database
>écrira le résultat de la mysqlcommande stdoutdans le fichier myfile.sql.gzqui n’est probablement pas ce que vous voulez. De plus, cette commande vous demandera le mot de passe de l'utilisateur MySQL "root".
En tant que bonne pratique de sécurité, je mettrais mon mot de passe sur la ligne de commande, je laisserais mysql le demander.
Prof. Moriarty
9
Ou même mieux: créer ~/.my.cnfavec les informations d'identification. ;)
joschi
5
Comme @Prof. Moriarty explique, vous pouvez modifier la commande pour ne pas utiliser le mot de passe via zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database. Il saura que le dernier paramètre est la base de données que vous souhaitez utiliser, pas votre mot de passe.
Bafromca
6
Pour corriger légèrement le commentaire de @Moriarty, une bonne pratique de sécurité consisterait à ne pas mettre mon mot de passe sur la ligne de commande (où il sera stocké dans l'historique ou visible par-dessus votre épaule) et à laisser MySQL le demander. Si l'option -p est utilisée seule, MySQL demandera le mot de passe à l'invite.
George
4
+1 pour quelque chose qui laisse le fichu dump de base de données compressé
Dmitri DB
82
Pour afficher une barre de progression lors de l'importation d'un fichier sql.gz, téléchargez pvet utilisez les éléments suivants:
pv mydump.sql.gz | gunzip | mysql -u root -p
Dans CentOS / RHEL, vous pouvez installer pv avec yum install pv.
pvsemble être dans le repo Ubuntu aussi (du moins dans 12.04 LTS, c’est le cas), mais encore une fois, vous devez le faire sudo apt-get install pvpour l’obtenir. Merci Banjer, c'est parfait pour les grosses importations de bases de données!
toon81
Je devais exécuter pv mydump.sql.gz | gunzip | mysql -u root my_database_base. C'était parce que j'importais des tables et que je n'ai pas de mot de passe pour mon utilisateur root
Cristiano Mendonça
Dans MAC,brew install pv
score
54
Le moyen le plus simple consiste à décompresser le fichier de base de données avant de l'importer. Aussi comme mentionné par @Prof. Moriarty vous ne devriez pas spécifier le mot de passe dans la commande (il vous sera demandé le mot de passe). Cette commande extraite de webcheatsheet va décompresser et importer la base de données en une fois:
De plus, mydb doit être créé avant l'importation. Cela ne crée pas la base de données pour vous.
Siddhartha
J'ai trouvé ma tuyauterie gunzipsur un fichier compressé de 10 Go a bloqué mon importation. Je ne sais pas si cela est dû à des contraintes de mémoire ou à quelque chose du genre, mais je préférerais faire une étape à la fois dans le futur.
Ryan Tuck
@RyanTuck Cela repousse les limites de ce genre de processus :)
icc97
@Siddhartha Cela dépend du fichier de vidage SQL. Parfois, ils incluent des instructions create database.
Vérifiez également s'il existe une instruction USE dans le fichier SQL. La spécification de la base de données sur la ligne de commande ne garantit pas la fin des données si une destination différente est spécifiée dans le fichier SQL.
Vous avez juste besoin d'étendre la commande comme ceci: pv mydump.sql.gz | gunzip | mysql -u root -pyour_database. La réponse acceptée utilise cette approche.
Bafromca
1
Pour les fichiers compressés bzip2 (.sql.bz2), utilisez:
bzcat <file> | mysql -u <user> -p <database>
OU
pv <file> | bunzip2 | mysql -u <user> -p <database>
Réponses:
>
écrira le résultat de lamysql
commandestdout
dans le fichiermyfile.sql.gz
qui n’est probablement pas ce que vous voulez. De plus, cette commande vous demandera le mot de passe de l'utilisateur MySQL "root".la source
~/.my.cnf
avec les informations d'identification. ;)zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database
. Il saura que le dernier paramètre est la base de données que vous souhaitez utiliser, pas votre mot de passe.Pour afficher une barre de progression lors de l'importation d'un fichier sql.gz, téléchargez
pv
et utilisez les éléments suivants:Dans CentOS / RHEL, vous pouvez installer pv avec
yum install pv
.Dans Debian / Ubuntu
apt-get install pv
.En MAC,
brew install pv
la source
pv
semble être dans le repo Ubuntu aussi (du moins dans 12.04 LTS, c’est le cas), mais encore une fois, vous devez le fairesudo apt-get install pv
pour l’obtenir. Merci Banjer, c'est parfait pour les grosses importations de bases de données!brew install pv
Le moyen le plus simple consiste à décompresser le fichier de base de données avant de l'importer. Aussi comme mentionné par @Prof. Moriarty vous ne devriez pas spécifier le mot de passe dans la commande (il vous sera demandé le mot de passe). Cette commande extraite de webcheatsheet va décompresser et importer la base de données en une fois:
la source
gunzip
sur un fichier compressé de 10 Go a bloqué mon importation. Je ne sais pas si cela est dû à des contraintes de mémoire ou à quelque chose du genre, mais je préférerais faire une étape à la fois dans le futur.Si vous obtenez une erreur
zcat
indiquant que le message d'erreur contient le nom du fichier avec un suffixe supplémentaire.Z
, essayez à lagzcat
place, comme décrit à l' adresse https://stackoverflow.com/questions/296717/zcat-wont-unzip-files-properly.la source
Sur macOS, j'ai utilisé ceci:
Entrez votre mot de passe, et le tour est joué!
la source
Vérifiez également s'il existe une instruction USE dans le fichier SQL. La spécification de la base de données sur la ligne de commande ne garantit pas la fin des données si une destination différente est spécifiée dans le fichier SQL.
la source
pv mydump.sql.gz | gunzip | mysql -u root -p
your_database
. La réponse acceptée utilise cette approche.Pour les fichiers compressés bzip2 (.sql.bz2), utilisez:
OU
pour voir la barre de progression.
la source
Vous pouvez utiliser l'
-c, --stdout, --to-stdout
option degunzip
commandepar exemple:
la source