Question Comment charger un fichier sql.gz dans ma base de données? (importation)


J'essaie d'importer directement un fichier SQL compressé dans mysql. Est-ce la bonne façon?

mysql -uroot -ppassword mydb > myfile.sql.gz

118
2018-05-03 07:06


origine


Même en ignorant le côté gzip de la question, votre flèche pointe dans le mauvais sens ... - Matt Fletcher


Réponses:


zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database

> écrira la sortie du mysql commande sur stdout dans le dossier myfile.sql.gz ce qui n'est probablement pas ce que vous voulez. De plus, cette commande vous demandera le mot de passe de l'utilisateur MySQL "root".


186
2018-05-03 07:10



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
Ou encore mieux: créer ~/.my.cnf avec les informations d'identification. ;) - joschi
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
Pour corriger légèrement le commentaire de @Moriarty, une bonne pratique de sécurité consisterait à: ne pas mettez mon mot de passe sur la ligne de commande (où il sera stocké dans l'historique ou vu par-dessus votre épaule) et laissez MySQL le demander. Le drapeau -p seul obligera MySQL à demander le mot de passe à l'invite. - George
+1 pour quelque chose qui laisse la fichue base de données compressée - Dmitri DB


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:

pv mydump.sql.gz | gunzip | mysql -u root -p

Dans CentOS / RHEL, vous pouvez installer pv avec yum install pv.

Dans Debian / Ubuntu apt-get install pv.

En MAC, brew install pv


66
2017-11-03 19:46



pv semble également figurer dans le référentiel Ubuntu (au moins dans 12.04 LTS, c’est le cas), mais encore une fois, vous devez le faire. sudo apt-get install pv pour 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’est parce que j’importais des tables et que je n’ai pas défini de mot de passe pour mon utilisateur root. - Cristiano Mendonça
En MAC, brew install pv - score


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 (le mot de passe vous sera demandé). Cette commande prise de fiche technique va décompresser et importer la base de données en une fois:

gunzip < myfile.sql.gz | mysql -u root -p mydb

47
2017-11-22 15:51



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 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. - Ryan Tuck
@RyanTuck Cela repousse les limites de ce type de processus :) - icc97
@Siddhartha Cela dépend du fichier de vidage SQL. Parfois, ils incluent des instructions create database. - rooby
@rooby c'est logique. - Siddhartha


Si vous obtenez une erreur de zcat, dans lequel le message d'erreur contient le nom du fichier avec un suffixe supplémentaire .Z, puis essayez d'utiliser gzcat comme décrit à la https://stackoverflow.com/questions/296717/zcat-wont-unzip-files-properly


10
2017-07-08 13:59





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.


3
2018-05-03 11:28



Vous avez juste besoin d'étendre la commande comme ceci: pv mydump.sql.gz | gunzip | mysql -u root -p  your_database. La réponse acceptée utilise cette approche. - bafromca


Sur macOS, j'ai utilisé ceci:

zcat < [Database].sql.gz | mysql -u root -p [Database Name in MySQL]

Entrez votre mot de passe, et le tour est joué!


3
2017-11-28 07:41





Pour bzip2 fichiers compressés (.sql.bz2), utilisez:

bzcat <file> | mysql -u <user> -p <database>

OU

pv <file> | bunzip2 | mysql -u <user> -p <database>

pour voir la barre de progression.


1
2017-08-01 15:25





Vous pouvez utiliser -c, --stdout, --to-stdout option de gunzip commander

par exemple:

gunzip -c file.sql.gz | mysql -u root -p database

0
2017-09-16 06:03