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