Comment restaurer un fichier de vidage depuis mysqldump?


544

On m'a donné un fichier de base de données MySQL que je dois restaurer en tant que base de données sur ma machine Windows Server 2008.

J'ai essayé d'utiliser MySQL Administrator, mais j'ai eu l'erreur suivante:

Le fichier sélectionné a été généré par mysqldump et ne peut pas être restauré par cette application.

Comment puis-je faire fonctionner cela?

Réponses:


587

Cela devrait être aussi simple que d'exécuter ceci:

mysql -u <user> -p < db_backup.dump

Si le vidage concerne une seule base de données, vous devrez peut-être ajouter une ligne en haut du fichier:

USE <database-name-here>;

S'il s'agissait d'un vidage de nombreuses bases de données, les instructions use s'y trouvent déjà.

Pour exécuter ces commandes, ouvrez une invite de commande (sous Windows) et cddans le répertoire où se trouve l' mysql.exeexécutable (vous devrez peut-être y chercher un peu, cela dépendra de la façon dont vous avez installé mysql, c'est-à-dire autonome ou dans le cadre de un package comme WAMP). Une fois que vous êtes dans ce répertoire, vous devriez pouvoir simplement taper la commande telle que je l'ai ci-dessus.


1
Dois-je utiliser "MySQL Command Line Client"? Je n'ai jamais utilisé MySQL auparavant.
Zack Peterson,

1
Ouvrez le fichier de vidage dans un éditeur de texte, il est assez facile de le parcourir, s'il y a des instructions "using", puis de plusieurs bases de données, s'il n'y en a pas, vous devrez en ajouter une en haut avant de pouvoir exécutez cette commande.
Justin Bennett

6
Bien sûr, la base de données que vous mettez dans l'instruction "using" devra d'abord exister.
Justin Bennett

113
voir la réponse de vogs. La syntaxe n'est mysql -u<user> -p mydatabasename < db_backup.dump pas nécessaire pour une USEinstruction au début du fichier
Toskan

1
La suggestion "Ouvrir le fichier de vidage dans un éditeur de texte" semble étrange. Cela pourrait fonctionner avec de petites bases de données ou un éditeur de texte tamponné comme EditPad, mais avec tout le reste, il s'étouffera. Ce serait bien si vous n'aviez pas à franchir cette étape.
mikato

719

Si la base de données que vous souhaitez restaurer n'existe pas déjà, vous devez d'abord la créer.

Sur la ligne de commande, si vous vous trouvez dans le même répertoire qui contient le fichier sauvegardé, utilisez ces commandes (avec les substitutions appropriées):

C:\> mysql -u root -p

mysql> create database mydb;
mysql> use mydb;
mysql> source db_backup.dump;

52
j'aime personnellement cette méthode. il montre la progression du vidage et aussi exactement combien de temps différent sql prend.
ToughPal

11
@Phrogz En fait, vous pouvez fournir un mot de passe sur la ligne de commande en utilisant mysql -u root -psecret sans l'espace, mais a l'inconvénient que votre mot de passe apparaît en texte clair dans les listes de processus et les fichiers journaux. Il est préférable, comme vous le suggérez, d'utiliser vide -pet de le saisir dans l'invite.
Joe Holloway

Cette méthode a l'avantage de permettre de définir des variables basées sur la session (par exemple FOREIGN_KEY_CHECKS) sans avoir à modifier le fichier de vidage
Chris Cooper

c'est très bien quand on fait ce genre de choses à la main, mais ça ne fonctionne pas à partir d'un script bash.
chacham15

1
Un inconvénient: il ne peut pas charger de vidage gzippé (par exemple généré avec mysqldump db | gzip -9 > dumpfile.sql.gz)
Marinos An

246

Vous devez simplement exécuter ceci:

mysql -p -u[user] [database] < db_backup.dump

Si le vidage contient plusieurs bases de données, vous devez omettre le nom de la base de données:

mysql -p -u[user] < db_backup.dump

Pour exécuter ces commandes, ouvrez une invite de commande (sous Windows) et cddans le répertoire où se trouve l' mysql.exeexécutable (vous devrez peut-être y chercher un peu, cela dépendra de la façon dont vous avez installé mysql, c'est-à-dire autonome ou dans le cadre de un package comme WAMP). Une fois que vous êtes dans ce répertoire, vous devriez pouvoir simplement taper la commande.


60
mysql -u username -p -h localhost DATA-BASE-NAME < data.sql

regardez ici - étape 3 : de cette façon, vous n'avez pas besoin de l'instruction USE


33

Lorsque nous créons un fichier de vidage avec mysqldump, il contient un gros script SQL pour recréer le contenu de la base de données. Nous le restaurons donc en utilisant le démarrage du client en ligne de commande de MySQL:

mysql -uroot -p 

(où rootest notre nom d'utilisateur administrateur pour MySQL), et une fois connecté à la base de données, nous avons besoin de commandes pour créer la base de données et y lire le fichier:

create database new_db;
use new_db;
\. dumpfile.sql

Les détails varient en fonction des options utilisées lors de la création du fichier de vidage.


19

Exécutez la commande pour entrer dans la base de données

 # mysql -u root -p 

Entrez le mot de passe de l'utilisateur, puis créez une nouvelle base de données

mysql> create database MynewDB;
mysql> exit

Et faites exit.Afetr that.Run this Command

# mysql -u root -p  MynewDB < MynewDB.sql

Entrez ensuite dans la base de données et tapez

mysql> show databases;
mysql> use MynewDB;
mysql> show tables;
mysql> exit

C'est tout ........ Votre vidage sera restauré d'une base de données à une autre base de données

Ou bien il existe une autre façon de restaurer le vidage

# mysql -u root -p 

Entrez ensuite dans la base de données et tapez

mysql> create database MynewDB;
mysql> show databases;
mysql> use MynewDB;
mysql> source MynewDB.sql;
mysql> show tables;
mysql> exit

14

Je l'ai fait fonctionner en suivant ces étapes…

  1. Ouvrez l'administrateur MySQL et connectez-vous au serveur

  2. Sélectionnez "Catalogues" à gauche

  3. Faites un clic droit dans la case en bas à gauche et choisissez "Créer un nouveau schéma"

    Administrateur MySQL http://img204.imageshack.us/img204/7528/adminsx9.th.gif agrandir l'image

  4. Nommez le nouveau schéma (exemple: "dbn")

    Nouveau schéma MySQL http://img262.imageshack.us/img262/4374/newwa4.th.gif agrandir l'image

  5. Ouvrir l'invite de commande Windows (cmd)

    Invite de commandes Windows http://img206.imageshack.us/img206/941/startef7.th.gif agrandir l'image

  6. Changer le répertoire dans le dossier d'installation de MySQL

  7. Exécuter la commande:

    mysql -u root -p dbn < C:\dbn_20080912.dump

    … Où "root" est le nom de l'utilisateur, "dbn" est le nom de la base de données et "C: \ dbn_20080912.dump" est le chemin / nom de fichier du fichier mysqldump .dump

    Ligne de commande de restauration de vidage MySQL http://img388.imageshack.us/img388/2489/cmdjx0.th.gif agrandir l'image

  8. Prendre plaisir!



11

Si vous souhaitez voir la progression du vidage, essayez ceci:

pv -i 1 -p -t -e /path/to/sql/dump | mysql -u USERNAME -p DATABASE_NAME

Vous aurez bien sûr besoin que «pv» soit installé. Cette commande ne fonctionne que sur * nix.


10

Comme exemple spécifique d'une réponse précédente:

J'avais besoin de restaurer une sauvegarde pour pouvoir l'importer / migrer dans SQL Server. J'ai installé MySql uniquement, mais je ne l'ai pas enregistré en tant que service ou je ne l'ai pas ajouté à mon chemin d'accès car je n'ai pas besoin de le faire fonctionner.

J'ai utilisé l'explorateur Windows pour placer mon fichier de vidage dans C: \ code \ dump.sql. Puis ouvert MySql à partir de l'élément du menu Démarrer. Créé la base de données, puis exécuté la commande source avec le chemin d'accès complet comme suit:

mysql> create database temp
mysql> use temp
mysql> source c:\code\dump.sql

9

En utilisant un fichier de vidage de 200 Mo créé sur Linux pour restaurer sur Windows avec mysql 5.5, j'ai eu plus de succès avec le

source file.sql

approche à partir de l'invite mysql qu'avec le

mysql  < file.sql

approche sur la ligne de commande, qui a provoqué une erreur 2006 "le serveur est parti" (sur windows)

Bizarrement, le service créé lors de l'installation de (mysql) fait référence à un fichier my.ini qui n'existait pas. J'ai copié le "grand" fichier d'exemple dans my.ini que j'avais déjà modifié avec les augmentations conseillées.

Mes valeurs sont

[mysqld]
max_allowed_packet = 64M
interactive_timeout = 250
wait_timeout = 250

9
./mysql -u <username> -p <password> -h <host-name like localhost> <database-name> < db_dump-file

C'est la même chose que quelques autres réponses, et c'est une question vieille de huit ans.
miken32

2
Bien que la réponse choisie soit très bonne, cette réponse m'a en fait été plus utile. Mon fichier de base de données était ÉNORME, et son ouverture dans Notepad ++ était un cauchemar, il ne pouvait tout simplement pas gérer la taille et ne me permettait pas d'ajouter le nom de la base de données en haut du fichier sql. Dans ce cas, être en mesure de spécifier le nom de la base de données à partir de la ligne de commande est en fait plus utile.
Najeeb

La mysqlcommande n'accepte pas les espaces entre les options et leurs arguments. Il doit l'être à la -u<username>place et le mot de passe ne doit pas du tout être fourni sur la ligne de commande.
Roland Illig

4

Vous ne pouvez pas utiliser le menu Restaurer dans MySQL Admin si la sauvegarde / sauvegarde n'a pas été créée à partir de là. Ça vaut le coup cependant. Si vous choisissez "d'ignorer les erreurs" avec la case à cocher pour cela, il dira qu'il s'est terminé avec succès, bien qu'il se termine clairement avec seulement une fraction des lignes importées ... c'est avec un vidage, pensez-vous.


2

Commande à une ligne pour restaurer le SQL généré à partir de mysqldump

mysql -u <username> -p<password> -e "source <path to sql file>;"

1
par exemplemysql -u root -p12345678 -e "source /tmp/backup.sql;"
Jossef Harush

N'utilisez pas le mot de passe comme ceci, utilisez simplement -p et la ligne de commande vous demandera une demande de mot de passe sécurisé après avoir appuyé sur Entrée.
user2473015

Lorsque vous pouvez vous permettre une invite interactive, vous avez raison. Lorsque vous ne pouvez pas (par exemple un script sans assistance), vous l'utiliserez probablement en ligne
Jossef Harush

1

Vous pouvez également utiliser le menu de restauration dans MySQL Administrator. Il vous suffit d'ouvrir le fichier de sauvegarde, puis de cliquer sur le bouton de restauration.


0

Comment restaurer la base de données MySQL avec MySQLWorkbench

Vous pouvez exécuter la suppression et créer des commandes dans un onglet de requête.

Supprimez le schéma s'il existe actuellement

DROP DATABASE `your_db_name`;

Créer un nouveau schéma

CREATE SCHEMA `your_db_name`;

Ouvrez votre fichier de vidage

Fichier SQL ouvert MySQLWorkbench

  1. Cliquez sur l' icône Ouvrir un script SQL dans une nouvelle onglet de requête et choisissez votre fichier de vidage db.
  2. Cliquez ensuite sur Exécuter le script SQL ...
  3. Il vous permettra ensuite de prévisualiser les premières lignes du script de vidage SQL.
  4. Vous choisirez ensuite le nom de schéma par défaut
  5. Ensuite, choisissez le jeu de caractères par défaut utf8 est normalement une valeur sûre, mais vous pourrez peut-être le discerner en regardant les lignes d'aperçu pour quelque chose comme character_set .
  6. Cliquez sur Exécuter
  7. Soyez patient pour les gros scripts de restauration de base de données et regardez votre espace disque fondre! 🎉

0

En supposant que vous avez déjà créé la base de données vierge, vous pouvez également restaurer une base de données à partir de la ligne de commande comme ceci:

sudo mysql databasename < backup.sql
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.