#mysql
#mysql
Вопрос:
У меня есть резервная копия mysqldump, которая была создана с помощью --no-create-info
option . Я хочу восстановить его в новой базе данных, в которой нет определенных таблиц (примерно 50 таблиц удалены из целевой базы данных, поскольку они больше не нужны).
Итак, я получаю Table 'table_name' doesn't exist
по очевидной причине.
Итак, каков mysql
способ восстановления в базе данных, в которой нет всех таблиц, присутствующих в файле резервной копии.
Я могу --insert-ignore
попытаться избежать этого сбоя, но я сомневаюсь, что это может также игнорировать некоторые подлинные ошибки, такие как несоответствие типов данных и т. Д.
Комментарии:
1. Ошибка Сомневаюсь, что вы можете заставить mysql игнорировать тот факт, что вы пытаетесь восстановить несуществующие таблицы. Или я неправильно понял
2. Это вопрос типа «Если бы у меня была ветчина, у нас могли бы быть ветчина и яйца, если бы у меня были яйца»?
3. @RiggsFolly- Предположим, у меня есть резервная копия базы данных, в которой было 100 таблиц, но в моей новой базе данных всего 50 таблиц.
4. Является ли резервная копия форматом SQL?
5. ДА. Инструкции вставки
Ответ №1:
Очевидно, что вы не можете вставлять строки в таблицу, которая не существует.
Чтобы восстановить данные в вашем файле дампа, вам нужно сначала создать эти таблицы. Вы можете вернуться к исходному экземпляру MySQL и сбросить эти определения таблиц с помощью mysqldump --no-data
Если вас не интересуют данные, и вы хотите восстановить данные только для таблиц, которые существуют, тогда вы можете отфильтровать инструкции INSERT, прежде чем пытаться импортировать этот скрипт.
Вы могли бы использовать grep -v
, например, для удаления строк.
Или вы могли бы использовать sed
для удаления строк между «— Dumping data for table tablename
» и любой следующей таблицей.
Если вы не хотите фильтровать данные, но вам не нужно восстанавливать данные для таблиц, которые не существуют, вы можете создать фиктивные таблицы с правильными полями, но определить таблицы с помощью механизма хранения BLACKHOLE, поэтому вставки фактически не приведут к сохранению каких-либо данных.
Еще один вариант: импортируйте файл дампа с mysql --force
помощью so, чтобы он продолжался, даже если он получает ошибки при некоторых вставках.