web-dev-qa-db-fra.com

Importer et insérer un fichier sql.gz dans la base de données avec du mastic

Je souhaite insérer un fichier sql.gz dans ma base de données avec SSH. Que devrais-je faire?

Par exemple, j'ai une base de données de numéros de téléphone dont le nom est numbers.sql.gz, quel est ce type de fichier et comment puis-je importer ce fichier dans ma base de données?

64
babak faghihian

Le fichier est un fichier SQL compressé (compressé), très certainement un fichier texte avec l'extension .sql. La première chose à faire est de copier le fichier sur votre serveur de base de données via scp .. Je pense que PuTTY est pscp.exe

# Copy it to the server via pscp
C:\> pscp.exe numbers.sql.gz user@serverhostname:/home/user

Puis SSH sur votre serveur et décompressez le fichier avec gunzip

user@serverhostname$  gunzip numbers.sql.gz
user@serverhostname$  ls 

numbers.sql

Enfin, importez-le dans votre base de données MySQL en utilisant l'opérateur de redirection d'entrée <:

user@serverhostname$  mysql -u mysqluser -p < numbers.sql

Si le fichier numbers.sql ne crée pas de base de données mais s'attend à en avoir une déjà présente, vous devez également inclure la base de données dans la commande:

user@serverhostname$  mysql -u mysqluser -p databasename < numbers.sql

Si vous avez la possibilité de vous connecter directement à votre serveur MySQL depuis l’extérieur, vous pouvez utiliser un client MySQL local au lieu de devoir copier et SSH. Dans ce cas, vous aurez simplement besoin d’un utilitaire capable de décompresser les fichiers .gz sous Windows. Je pense que 7Zip le fait, ou vous pouvez obtenir les binaires gzip/gunzip pour Windows.

56
Michael Berkowski

Connectez-vous à votre serveur en utilisant un programme Shell comme PuTTY.

Tapez la commande suivante sur la ligne de commande

zcat DB_File_Name.sql.gz | mysql -u username -p Target_DB_Name

DB_File_Name.sql.gz = chemin complet du fichier sql.gz à importer

username = votre nom d'utilisateur mysql

Target_DB_Name = nom de la base de données où vous souhaitez importer la base de données

Lorsque vous appuyez sur Entrée dans la ligne de commande, il vous demandera le mot de passe Entrez votre mot de passe MySQL.

Vous avez terminé!

105
seshu

Sans étape séparée pour extraire l'archive:

# import gzipped-mysql dump
gunzip < DUMP_FILE.sql.gz | mysql --user=DB_USER --password DB_NAME

J'utilise l'extrait de code ci-dessus pour réimporter mysqldump-backups, et le suivant pour le sauvegarder.

# mysqldump and gzip (-9 ≃ highest compression)
mysqldump --user=DB_USER --password DB_NAME | gzip -9 > DUMP_FILE.sql.gz
46
feeela

Pour un oneliner, sur linux ou sur cygwin, vous devez authentifier la clé publique sur l'hôte, sinon ssh vous demandera un mot de passe. 


gunzip -c numbers.sql.gz | ssh user@Host mysql --user=user_name --password=your_password db_name

Ou effectuez une redirection de port et connectez-vous au mysql distant en utilisant une connexion "locale":

ssh -L some_port:Host:local_mysql_port user@Host

faites ensuite la connexion mysql sur votre machine locale avec localhost: some_port .

La redirection de port fonctionne à partir de PuTTY aussi, avec l'option -L similaire ou vous pouvez le configurer à partir du panneau de configuration, quelque part dans l'arborescence.

3
Raul

Si vous avez scp alors:

Pour déplacer votre fichier de local à distant:

$scp /home/user/file.gz user@ipaddress:path/to/file.gz 

Pour déplacer votre fichier de distant à local:

$scp user@ipaddress:path/to/file.gz /home/user/file.gz

Pour exporter votre fichier mysql sans vous connecter au système distant:

$mysqldump -h ipaddressofremotehost -Pportnumber -u usernameofmysql -p  databasename | gzip -9 > databasename.sql.gz

Pour importer votre fichier mysql sans vous connecter à un système distant:

$gunzip < databasename.sql.gz | mysql -h ipaddressofremotehost -Pportnumber -u usernameofmysql -p 

Remarque: assurez-vous d'avoir un accès réseau à l'adresse IP de l'hôte distant.

Pour vérifier l'accès au réseau:

$ping ipaddressofremotehost
2
sarathkm

Si le vidage mysql était un fichier .gz, vous devez gunzip pour le décompresser en tapant $ Gunzip mysqldump.sql.gz.

Cela décompresse le fichier .gz et stocke simplement mysqldump.sql au même endroit.

Tapez la commande suivante pour importer le fichier de données SQL:

$ mysql -u nom d'utilisateur -p -h localhost base de données de test <mot_clé_sqldump.sql: _

0
Raj Kumar

Si vous avez beaucoup de bases de données importées et que les sauvegardes sont volumineuses (je travaille souvent avec des sauvegardes multigigaoctets gzipped).

Voici un moyen de le faire dans mysql.

$ mkdir databases
$ cd databases
$ scp user@orgin:*.sql.gz .  # Here you would just use PuTTY to copy into this dir.
$ mkfifo src
$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.5.41-0
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create database db1;
mysql> \! ( zcat  db1.sql.gz > src & )
mysql> source src
.
.
mysql> create database db2;
mysql> \! ( zcat  db2.sql.gz > src & )
mysql> source src

Le seul avantage que cela a sur

zcat db1.sql.gz | mysql -u root -p 

est-ce que vous pouvez facilement faire plusieurs sans entrer le mot de passe de nombreuses fois.

0
rgammans

Création d'un fichier de vidage SQL.gz sur le serveur actuel

$ Sudo apt-get install pigz pv

$ pv | mysqldump --user=<yourdbuser> --password=<yourdbpassword> <currentexistingdbname> --single-transaction --routines --triggers --events --quick --opt -Q --flush-logs --allow-keywords --hex-blob --order-by-primary --skip-comments --skip-disable-keys --skip-add-locks --extended-insert --log-error=/var/log/mysql/<dbname>_backup.log | pigz > /path/to/folder/<dbname>_`date +\%Y\%m\%d_\%H\%M`.sql.gz

Facultatif: arguments de commande pour la connexion

--Host=127.0.0.1 / localhost / IP Address of the Dump Server
--port=3306

Importation du fichier de vidage créé ci-dessus sur un autre serveur

$ Sudo apt-get install pigz pv

$ zcat /path/to/folder/<dbname>_`date +\%Y\%m\%d_\%H\%M`.sql.gz | pv | mysql --user=<yourdbuser> --password=<yourdbpassword> --database=<yournewdatabasename> --compress --reconnect --unbuffered --net_buffer_length=1048576 --max_allowed_packet=1073741824 --connect_timeout=36000 --line-numbers --wait --init-command="SET GLOBAL net_buffer_length=1048576;SET GLOBAL max_allowed_packet=1073741824;SET FOREIGN_KEY_CHECKS=0;SET UNIQUE_CHECKS = 0;SET AUTOCOMMIT = 1;FLUSH NO_WRITE_TO_BINLOG QUERY CACHE, STATUS, SLOW LOGS, GENERAL LOGS, ERROR LOGS, ENGINE LOGS, BINARY LOGS, LOGS;"

Facultatif: arguments de commande pour la connexion

--Host=127.0.0.1 / localhost / IP Address of the Import Server
--port=3306

mysql: [Avertissement] L'utilisation d'un mot de passe sur l'interface de ligne de commande peut ne pas être sûre . 1.0GiB 00:06:51 [8.05MiB/s] [<=>]

Les progiciels optionnels sont utiles pour importer votre fichier SQL de base de données plus rapidement. 

  • avec une vue de progression (pv)
  • Fichiers parallèles de gzip (pigz/unpigz) à gzip/gunzip

pour une compression plus rapide de la sortie

0
rjt1224