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

Je veux 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 à partir 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
demandé sur 7ochem 2012-06-10 23:16:29

7 réponses

Le fichier est un fichier SQL gzippé (compressé), presque certainement un fichier texte brut avec .sql comme son extension. La première chose que vous devez 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 dans 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 les chiffres.le fichier sql ne crée pas de base de données mais s'attend à ce que l'on soit déjà présent, vous devrez é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 d'avoir à copier et SSH. Dans ce cas, vous auriez juste besoin d'un utilitaire qui peut décompresser .fichiers gz sur Windows. Je crois que 7zip le fait, ou vous pouvez obtenir les binaires gzip/gunzip Pour Windows.

55
répondu Michael Berkowski 2012-06-10 19:53:48

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 sql.fichier gz à importer

username = votre nom d'utilisateur mysql

Target_DB_Name = nom de base de données dans lequel 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
répondu seshu 2012-09-01 23:02:20

Sans une é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 ci-dessus pour réimporter mysqldump-backups, et ce qui suit pour le sauvegarder.

# mysqldump and gzip (-9 ≃ highest compression)
mysqldump --user=DB_USER --password DB_NAME | gzip -9 > DUMP_FILE.sql.gz
46
répondu feeela 2015-09-14 13:12:06

Pour un oneliner, sous linux ou cygwin, vous devez effectuer une authentification par clé publique sur l'hôte, sinon ssh 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

Ensuite, faites la connexion mysql sur votre machine locale à localhost: some_port .

La redirection de port fonctionnera aussi à partir de putty , avec l'option-l similaire ou vous pouvez la configurer à partir du panneau des paramètres, quelque part vers le bas sur l'arbre.

3
répondu Raul 2012-06-10 20:46:08

Si vous avez scp alors:

Pour déplacer votre fichier du local vers le distant:

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

Pour déplacer votre fichier de distant vers 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 au système distant:

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

Remarque: assurez-vous d'avoir accès au réseau de l'adresse ip de l'hôte distant

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

$ping ipaddressofremotehost
2
répondu sarathkm 2016-02-18 02:34:46

Si vous avez beaucoup de base de données, il importe et les dumps sont gros (je travaille souvent avec des dumps gzippés multigigabyte).

Il y a ici un moyen de le faire à l'intérieur de 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 que vous pouvez facilement faire plusieurs sans entrer le mot de passe beaucoup de fois.

0
répondu rgammans 2015-02-19 13:48:33

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

Cela décompressera le .fichier gz et va simplement stocker mysqldump.sql dans le même emplacement.

Saisissez la commande suivante pour importer le fichier de données sql:

$ mysql - u username-P-H localhost test-database

0
répondu Raj Kumar 2018-01-22 07:17:14