Я использую MySQL GUI для переноса некоторых сайтов на новую версию CMS, выбирая определенные таблицы и запуская инструкцию INSERT
, сгенерированную из резервной копии дамп в пустой стол (новая схема). В старых таблицах есть несколько столбцов, которые не существуют в новой, поэтому script останавливается с такой ошибкой:
Script строка: 1 Неизвестный столбец 'user_id' в 'списке полей'
Черри - выбор нужных столбцов для экспорта или редактирование файла дампа будет слишком утомительным и трудоемким. Чтобы обойти это, я создаю неиспользуемые столбцы при создании ошибок, импортируя данные, запустив запрос, а затем удалив неиспользуемые столбцы, когда закончите с этой таблицей. Я посмотрел на INSERT IGNORE
, но это похоже на игнорирование дубликатов ключей (не то, что я ищу).
Есть ли способ преподносить INSERT
при игнорировании столбцов, которые не существуют в целевой таблице? Я ищу что-то "безболезненное", как некоторые существующие функции SQL.
Чтобы уточнить, я работаю с кучей файлов резервных копий и импортирую данные в локальную базу данных для тестирования, прежде чем переместить его на живой сервер. Пример такого решения, на которое я надеюсь:
-- Don't try to insert data from columns that don't exist in "new_table"
INSERT INTO `new_table` {IGNORE UNKNOWN COLUMNS} (`id`, `col1`, `col2`) VALUES
(1, '', ''),
(2, '', '');
Если что-то вроде этого просто не существует, я рад принять это как ответ и продолжать использовать свое текущее решение.