Дамп Mysqldump - Как восстановить одну таблицу из этого файла?
Мне нужно восстановить только одну таблицу в моей базе данных.
У меня есть файл .sql
, в котором есть вся необходимая информация для одной таблицы, но остальная часть перепишет важную информацию для других таблиц.
Вместо того, чтобы использовать решение здесь - используя инструмент, о котором я никогда не слышал, я решил, что будет более верным сделать это вручную.
К сожалению, MySqlDump сгенерировал ГИГАНТСКУЮ строку вставки, слишком длинную для вставки в команду mysql линия...
Что мне делать?
Должен ли я использовать sed, как описано в приведенной выше ссылке?
Или я мог бы скопировать команды для этой конкретной таблицы из mysqldump.sql
в новый файл .sql
, а затем вызвать:
mysql -u root -p -h localhost < copyPasteFile.sql
3 answers
Вы можете попробовать это
mysql -u root -p databasename -h localhost < copyPasteFile.sql
mysql -uuser -ppassword -e "create database temporary"
mysql -uuser -ppassword temporary < copyPasteFile.sql
mysqldump -uuser -ppassword temporary yourtable > onlythattable.sql
mysql -uuser -ppassword therealdb < onlythattable.sql
mysql -uuser -ppassword -e "drop database temporary"
Убедитесь, что в файле copyPasteFile.sql нет "использовать базу данных somedatabase"; если он был экспортирован с помощью phpmyadmin, он, вероятно, имеет это, если он был экспортирован с помощью mysqldump, он не будет.
Я не уверен, что это лучший способ, но я просто запускаю новую схему и восстанавливаю в нее резервную копию, сбрасываю нужные мне данные и импортирую их в производственную базу данных.
Я использую рабочий стол MYSQL, который упрощает работу, но следующие шаги, вероятно, могут быть воспроизведены в командной строке
- Создайте новую схему MYSQL
- Импорт автономной резервной копии
- Установите "Целевую схему" в новую пустую базу данных (.дамп sql не должен содержать создание схемы код)
- Восстановить резервную копию
- Сбросьте таблицу в csv и импортируйте ее в рабочую оперативную базу данных
- Удалить схему восстановления
Для восстановления схемы в командной строке, похоже, вы используете:
mysql -u <user name> -p <password> <database name> < sqlfilename.sql