2010-08-29 15 views
15

5 veritabanına sahip bir mysql dökümüm var ve bunlardan yalnızca birini (mysqldump veya başka birini kullanarak) içe aktarmanın bir yolu olup olmadığını bilmek istiyorum.Birden fazla veritabanını içeren bir mysqldump'tan bir veritabanını nasıl geri yüklerim?

Öneriler takdir edildi.

+0

Orada olduğunu sanmıyorum. Tüm veritabanlarını içe aktarıp, saklamak istediğiniz her şeyden vazgeçmek, yapabileceğiniz en iyi şeydir bence - ama asla bilemezsiniz, belki birisi bir şeyle gelir –

cevap

15

Dumped SQL'i sed üzerinden pipetleyebilir ve veritabanını sizin için ayıklayabilirsiniz. Bir şey gibi:

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

iki sed komutları: Yalnızca

  1. (her ikisi CREATE DATABASE hatları dahil) CREATE DATABASE satır aralarını eşleşen satırları yazdırmak ve
  2. den sonCREATE DATABASE satırı silin Mysqld'in ikinci bir veritabanı oluşturmasını istemediğimizden çıktı. Lütfen döküm CREATE DATABASE satırları içermiyorsa

, ayrıca USE hatları karşı eşleşebilir.

+0

Tek bir satıra ve '-u 've' -p' seçeneklerine bakın: cat all-databases.sql | sed -n -e '/^CREAT DATABASE. * \ 'the_database_you_want \' /,/^ CREAT DATABASE/p' | sed-'$ d' | mysql -u my_username -p' –

27

Mysql komut satırı - bir-veritabanı seçeneğini kullanabilirsiniz.

Elbette bunu yaptığınızda dikkatli olun.

Ayrıca mysql dumpsplitter'u da kullanabilirsiniz.

+0

Bunu denedim, ancak her zaman hatayı aldım "ERROR 1049 (42000): Bilinmeyen veritabanı 'redmine'. Dokümantasyon şöyle diyor: "Bu, ikili kayıttaki diğer veritabanlarına yapılan güncellemeleri atlamak için kullanışlıdır." Bu ikili bir günlük (sanırım) değil, bu yüzden işe yaramayacak. –

+1

Bu özelliğe ilişkin ilginç bir hata raporu buldum: http://bugs.mysql.com/bug.php?id=40477 –

+1

@ThePixelDeveloper: Önce boş bir veritabanının bulunması gerekiyor, sonra çalışıyor. –

İlgili konular