Я использую MySQL GUI для переноса некоторых сайтов в новую версию CMS, выбрав определенные таблицы и выполнив инструкцию INSERT
, сгенерированную из резервной копии, в пустую таблицу (новуюсхемы).В старых таблицах есть несколько столбцов, которых нет в новой, поэтому сценарий останавливается с ошибкой, подобной этой:
Строка сценария: 1 Неизвестный столбец 'user_id' в поле 'list '
Выбор нужных столбцов для экспорта или редактирование файла дампа будет слишком утомительным и отнимает много времени.Чтобы обойти это, я создаю неиспользуемые столбцы по мере возникновения ошибок, импортирую данные, выполняя запрос, а затем отбрасываю неиспользуемые столбцы, когда я закончу с этой таблицей.Я посмотрел на 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, '', '');
Если чего-то подобного просто не существует, я с радостью приму это в качестве ответа и продолжу использовать мой текущий обходной путь.