Ключ к миграции состоит в том, чтобы делать несколько вещей: во-первых, ничего не делать без текущей резервной копии. Во-вторых, если ключи будут меняться, вам необходимо сохранить как старый, так и новый в новой структуре, по крайней мере, временно (навсегда, если поле ключа открыто для пользователей, потому что они могут искать по нему, чтобы получить старые записи).
Затем вам необходимо получить полное представление об отношениях с дочерними таблицами. Если вы измените ключевое поле, все связанные таблицы также должны измениться. Здесь пригодится хранение как старого, так и нового ключа. Если вы забудете изменить какой-либо из них, данные перестанут быть верными и станут бесполезными. Так что это важный шаг.
Выберите несколько тестовых примеров для особенно сложных данных, обязательно включив один или несколько тестовых примеров для каждой связанной таблицы. Сохраните существующие значения в рабочих таблицах.
Чтобы начать миграцию, вы вставляете в новую таблицу, используя выбор из старой таблицы. В зависимости от количества записей вы можете захотеть перебирать пакеты (а не по одной записи за раз) для повышения производительности. Если новый ключ является идентификатором, вы просто помещаете значение старого ключа в его поле и позволяете базе данных создавать новые ключи.
Затем проделайте то же самое с соответствующими таблицами. Затем используйте старое значение ключа в таблице, чтобы обновить поля внешнего ключа, например:
Update t2
set fkfield = newkey
from table2 t2
join table1 t1 on t1.oldkey = t2.fkfield
Протестируйте миграцию, запустив тестовые примеры и сравнив данные с тем, что вы сохранили до миграции. Крайне важно тщательно протестировать данные миграции, иначе вы не можете быть уверены, что данные соответствуют старой структуре. Миграция - очень сложное действие; стоит потратить время и делать это очень методично и тщательно.
person
HLGEM
schedule
13.04.2009