J'essaie d'importer un fichier SQL compressé directement dans mysql. Est-ce la bonne façon?
mysql -uroot -ppassword mydb > myfile.sql.gz
zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database
>
écrit la sortie de la commande mysql
sur stdout
dans le fichier 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".
Pour afficher une barre de progression lors de l'importation d'un fichier sql.gz, téléchargez pv
et utilisez ce qui suit:
pv mydump.sql.gz | gunzip | mysql -u root -p <database name>
Dans CentOS/RHEL, vous pouvez installer pv avec yum install pv
.
Dans Debian/Ubuntu apt-get install pv
.
Sous MAC, brew install pv
Le moyen le plus simple consiste à décompresser le fichier de base de données avant l'importation. Aussi, comme mentionné par @ Prof. Moriarty vous ne devez pas spécifier le mot de passe dans la commande (il vous sera demandé le mot de passe). Cette commande tirée de webcheatsheet décompressera et importera la base de données en une seule fois:
gunzip < myfile.sql.gz | mysql -u root -p mydb
Si vous obtenez une erreur de zcat
, dans laquelle le message d'erreur contient le nom de fichier avec un suffixe supplémentaire .Z
, puis essayez d'utiliser gzcat
à la place, comme décrit sur https://stackoverflow.com/questions/296717/zcat-wont-unzip-files-properly
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é!
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 que les données y parviennent si une destination différente est spécifiée dans le fichier SQL.
Pour bzip2 fichiers compressés (.sql.bz2), utilisez:
bzcat <file> | mysql -u <user> -p <database>
OR
pv <file> | bunzip2 | mysql -u <user> -p <database>
pour voir la barre de progression.
Vous pouvez utiliser -c, --stdout, --to-stdout
option de la commande gunzip
par exemple:
gunzip -c file.sql.gz | mysql -u root -p database
Exporter dans la commande .sql.qz, c'est: -
mysqldump -u nom d'utilisateur -p base de données | gzip> database.sql.gz
Pour importer la commande de fichier .sql.qz, c'est: -
gunzip <database.sql.gz | mysql -u nomutilisateur -p nouvelle base de données
Shailesh Thapa