表内容的批量翻译

时间:2008-10-30 11:08:25

标签: sql sql-server insert identity bulk

我目前正在从旧数据库执行迁移操作。我需要执行数百万个原始行的迁移,将原始内容分成多个目标父/子行。

由于它不是简单的1对1迁移,并且生成的行是基于身份生成密钥的父/子行,执行迁移的最佳机制是什么?

我假设我不能使用批量插入,因为在生成脚本内容时无法确定子行的标识值?我目前唯一能想到的解决方案是明确设置标识,然后为导入设置一个预定的起点。

如果其他人有任何意见,我会很感激您的意见。

2 个答案:

答案 0 :(得分:1)

这是我的标准方法:

  • 创建新数据模型
  • 将数据拉入新数据库
  • 编写(并运行)SQL脚本以执行迁移
  • 测试
  • (可选)删除包含旧数据的表

使用纯SQL迁移数据可以获得很长的路要走。对于您描述的情况,您可能不需要处理单个Cursor来实现它。

在查询分析器(或dbms中的模拟)中运行该过程,您将拥有以下优势:您可以将所有内容包装在事务中,以便在此过程中出现任何问题时可以回滚。在dev数据库中以小块编写它并在块中进行测试。一切正常后,在生产数据库上设置脚本松散。

排序。

答案 1 :(得分:0)

感谢您的建议,但我更愿意制作程序化解决方案。我目前正在使用Nant / CruiseControl来自动化测试,并且需要我可以根据当前的实时遗留内容动态重新创建的内容。