Есть ли способ игнорировать столбцы, которых нет в INSERT?

Я использую 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, '', '');

Если чего-то подобного просто не существует, я рад принять это как ответ и продолжать использовать мой текущий обходной путь.

20
задан Wesley Murch 10 October 2011 в 13:36
поделиться