Копирование данных датабазы

Подскажите, пожалуйста, как правильно написать запрос для копирования данных из одной ДБ в другую.

Есть датабаза с кучей ненужных полей (некоторые имеют данные) и чистая датабаза. При нормальном копировании только данных сразу вылетает ошибка что в новой дб нет какого-нибудь поля. Как скопировать данные ДБ1 в ДБ2, что бы не вылетала эта ошибка и при копировании переносились только те данные для которых есть соответствующее поле?

1 ответов


В общем случае, Вам надо :
1. Прочитать метаданные базы назначения и источника.
2. Создать что-то похожее на словарь/матрицу, в котором бы описывалось соответствие старых и новых полей/таблиц.
3. Сгенерировать скрипт, который бы экспортировал только нужные данные

Наверняка есть приложения, которые в той или иной степени облегчают задачу. Насколько я знаю, прямо из коробки ни один сервер полностью такой утилиты не предлагает (много всего прийдется дописывать руками). Поищите Database migration tools...

Другой вариант - взять и скопировать все полностью, а потом удалить "лишние" поля вручную...


А какая СУБД?
Если MySQL, с помощью mysqldump не получится, зато можно так:


mysql -u USERNAME --password=PASSWORD --database=DATABASE --execute='SELECT `FIELD1`, `FIELD2` FROM `TABLE` LIMIT 0, 10000 ' -X > file.xml