В настоящее время я выполняю операцию миграции из устаревшей базы данных. Мне нужно выполнить миграцию миллионов исходных строк, разбив исходный контент на несколько целевых родительских / дочерних строк.
Поскольку это не простая миграция 1 к 1, и результирующие строки являются родительскими / дочерними строками на основе ключей, сгенерированных идентификаторами, какой лучший механизм для выполнения миграции?
Я предполагаю, что я не могу использовать массовую вставку, поскольку значения идентификаторов для дочерних строк не могут быть определены в момент создания содержимого скрипта? Единственное решение, которое я могу сейчас придумать, - это явно установить идентификатор и затем иметь заранее определенную начальную точку для импорта.
Если кто-то еще внесет свой вклад, я буду признателен за отзывы


Спасибо за предложение, но я бы предпочел разработать программное решение. В настоящее время я использую Nant / CruiseControl для автоматизации тестов, и мне нужно что-то, что я могу воссоздать на лету на основе текущего живого устаревшего контента.
Это мой стандартный подход:
Вы можете пройти долгий путь к миграции данных с помощью простого SQL. В описанном вами случае вам может не понадобиться иметь дело с одним курсором, чтобы передать его.
Запустив процесс в Query Analyzer (или аналоге в ваших dbms), вы получите то преимущество, что вы можете обернуть все в транзакцию, чтобы вы могли откатиться, если что-то пойдет не так. Напишите его по частям и протестируйте по частям в своей базе данных разработчика. Как только все заработает правильно, установите скрипт в производственной базе данных.
Сортировано.