Динамическое изменение таблиц MySQL для добавления отсутствующих полей при ВСТАВКЕ

#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. Это очень полезно для получения данных, необходимых для ИЗМЕНЕНИЯ. Спасибо, Конрад!