#mysql #insert #field #alter
#mysql #вставить #поле #изменить
Вопрос:
Я пытаюсь объединить данные из одной базы данных MySQL в другую. Проблема в том, что некоторые таблицы в Source_DB
имеют поля, которых нет в соответствующей таблице в Target_DB
.
Есть ли способ автоматически ALTER
добавлять в Target_DB
таблицу эти отсутствующие поля по мере их обнаружения?
Или я должен поступить по-другому, например, выполнить первый проход, где я сравниваю каждую таблицу, чтобы сначала добавить любые отсутствующие поля?
Комментарии:
1. Или просто вставить данные из
Target_DB
вSource_DB
, а затем переименовать таблицы?![]()
2. Интересная идея, хотя я пытаюсь сохранить ее односторонней операцией для простоты. Кроме того, мне нужно объединить данные, а не перезаписывать одну таблицу содержимым другой. Спасибо за идею!
3. Просто обратите внимание, что я нашел очень интересный PHP-скрипт для сравнения схем: joefreeman.co.uk/blog/2009/07 /…
Ответ №1:
Вы могли бы запросить INFORMATION_SCHEMA.COLUMNS
в каждой базе данных и выяснить, чего не хватает, с помощью запроса NOT IN, а затем, используя данные в INFORMATION_SCHEMA.COLUMNS
, динамически сгенерировать DDL.
Или вы могли бы использовать для этого такой инструмент, как MySQL Compare.
Комментарии:
1. Очень интересный инструмент, я попробую. Также спасибо, что указали на INFORMATION_SCHEMA.COLUMNS. Это очень полезно для получения данных, необходимых для ИЗМЕНЕНИЯ. Спасибо, Конрад!