web-dev-qa-db-fra.com

mysql restaurer sur différentes bases de données

Je sauvegarde ma base de données de production avec la commande suivante:

mysqldump -u root --opt --skip-extended-insert --databases my_production_db

Le fichier de vidage résultant contient les lignes suivantes vers le haut:

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `my_production_db` /*!40100 DEFAULT CHARACTER SET latin1 */;
USE `my_production_db `;

Afin de restaurer la base de données vers une destination différente, par exemple. my_debvelopment_db Je dois ouvrir le fichier de vidage et éditer les bits où la base de données est nommée.

Puis je cours:

mysql -u root  -p <password> < mydumpfile

Je n'ai pas trouvé d'autre moyen de le faire. 

À mesure que la base de données s'agrandit, cela devient impraticable.

Est-ce que je manque quelque chose? Puis-je spécifier en quelque sorte où je veux restaurer la base de données? Aurais-je besoin d'une commande de sauvegarde différente?

17
giorgio

Si vous supprimez l'option --databases tout en spécifiant le nom de la base de données, vous n'obtiendrez PAS les instructions create database. c'est à dire:

mysqldump -u root --opt --skip-extended-insert  my_production_db

Sur votre machine de développement, créez simplement la base de données sur laquelle vous souhaitez restaurer.

12
minaz

La réponse de @minaz était bonne, mais je veux ajouter un peu plus.

Le problème était dû au mot clé --databases. Si vous omettez le mot clé, il ne contiendra aucun contenu de création de base de données.

Dump sans le mot clé --databases.

mysqldump -u username -p database_name > dump.sql

Et restaurez-le avec le nom de la base de données cible.

mysql -u username -p target_database_name < dump.sql

En outre, il existe plusieurs façons de procéder. Voir le problème similaire sur ici (dba.stackexchange).

47
lqez

Sur Windows xampp j'ai utilisé les commandes suivantes pour y parvenir

Exportation

mysqldump -u root -p mydb > mydb.sql

Importation

mysql -u root -p mynewdb < mydb.sql
1
Muk

Si vous avez déjà votre vidage, vous pouvez supprimer les commandes de création et d'utilisation de la base de données. Supprimez simplement la quatrième et la nouvelle cinquième ligne.

sed '4d' dump.sql | sed '5d' > dump-striped.sql
0
netAction