Как восстановить одну базу данных из mysqldump, содержащей несколько баз данных?

У меня есть дамп mysql с 5 базами данных и хотел бы знать, есть ли способ импортировать только один из них (с использованием mysqldump или другого).

Предложения оценены.

Ответы

Ответ 1

Вы можете передать сбрасываемый SQL через sed и извлечь его для вас. Что-то вроде:

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

Две команды sed:

  • Распечатывайте только строки, соответствующие строкам CREATE DATABASE (включая строки CREATE DATABASE), и
  • Удалите последнюю строку CREATE DATABASE из вывода, так как мы не хотим, чтобы mysqld создавал вторую базу данных.

Если ваш дамп не содержит строк CREATE DATABASE, вы также можете сопоставлять строки USE.

Ответ 2

Вы можете использовать опцию командной строки mysql --one-database.

mysql> mysql -u root -p --one-database YOURDBNAME < YOURFILE.SQL

Конечно, будьте осторожны, когда вы это сделаете.

Вы также можете использовать mysql dumpsplitter.