2010-08-29 4 views
15

J'ai un vidage mysql avec 5 bases de données et je voudrais savoir s'il y a un moyen d'en importer juste un (en utilisant mysqldump ou autre).Comment restaurer une base de données à partir d'un mysqldump contenant plusieurs bases de données?

Suggestions appréciées.

+0

Je ne pense pas qu'il y en ait. Importer toutes les bases de données, et laisser tomber tout le monde, sauf celui que vous voulez garder, est la meilleure chose que vous puissiez faire - mais vous ne savez jamais, peut-être que quelqu'un a trouvé quelque chose –

Répondre

15

Vous pouvez rediriger le SQL sous le sed et l'extraire pour vous. Quelque chose comme:

cat mysqldumped.sql | \ 
sed -n -e '/^CREATE DATABASE.*`the_database_you_want`/,/^CREATE DATABASE/ p' | \ 
sed -e '$d' | \ 
mysql 

Les deux sed commandes:

  1. imprimer uniquement les lignes correspondant entre les CREATE DATABASE lignes (y compris les CREATE DATABASE lignes), et
  2. Supprimer la dernièreCREATE DATABASE ligne de la sortie car nous ne voulons pas que mysqld crée une deuxième base de données.

Si votre décharge ne contient pas les CREATE DATABASE lignes, vous pouvez également correspondre contre les USE lignes.

+0

Sur une seule ligne, et avec les options '-u' et' -p': 'chat all-databases.sql | sed -n -e '/^CREATE DATABASE. * \ 'la_database_you_want \' /,/^ CREATE DATABASE/p' | sed -e '$ d' | mysql -u mon_nom_utilisateur -p' –

27

Vous pouvez utiliser l'option de ligne de commande mysql --one-database.

Bien sûr, soyez prudent lorsque vous faites cela. Vous pouvez également utiliser un mysql dumpsplitter.

+0

J'ai essayé, mais j'ai toujours l'erreur "ERROR 1049 (42000): Base de données inconnue 'redmine' ". La documentation indique: "Ceci est utile pour ignorer les mises à jour d'autres bases de données dans le journal binaire." Ce n'est pas un journal binaire (je pense) donc ça ne marchera pas. –

+1

J'ai trouvé un rapport de bogue intéressant concernant cette fonctionnalité: http://bugs.mysql.com/bug.php?id=40477 –

+1

@ThePixelDeveloper: Une base de données vide doit d'abord exister, puis cela fonctionne. –

Questions connexes