我目前正在从旧数据库执行迁移操作。我需要执行数百万原始行的迁移,将原始内容分成多个目标父/子行。
由于这不是简单的一对一迁移,并且结果行是基于身份生成密钥的父/子行,执行迁移的最佳机制是什么?
我假设我不能使用批量插入,因为在生成脚本内容时无法确定子行的标识值?我目前能想到的唯一解决方案是明确设置身份,然后为导入有一个预定的起点。
如果其他人有任何意见,我将不胜感激。
我目前正在从旧数据库执行迁移操作。我需要执行数百万原始行的迁移,将原始内容分成多个目标父/子行。
由于这不是简单的一对一迁移,并且结果行是基于身份生成密钥的父/子行,执行迁移的最佳机制是什么?
我假设我不能使用批量插入,因为在生成脚本内容时无法确定子行的标识值?我目前能想到的唯一解决方案是明确设置身份,然后为导入有一个预定的起点。
如果其他人有任何意见,我将不胜感激。
这是我的标准方法:
使用纯 SQL 迁移数据还有很长的路要走。对于您描述的情况,您可能不需要处理单个 Cursor 即可完成它。
在查询分析器(或 dbms 中的模拟程序)中运行该过程,您将拥有可以将所有内容包装在 Transaction 中的优势,以便在出现任何异常时可以回滚。在你的开发数据库上,一点一点地编写它并在块中对其进行测试。一切正常后,在您的生产数据库上设置脚本松散。
排序。
感谢您的建议,但我更愿意提供程序化解决方案。我目前正在使用 Nant / CruiseControl 来自动化测试,并且需要一些我可以根据当前实时遗留内容即时重新创建的东西。