【发布时间】:2011-02-08 16:39:53
【问题描述】:
我们目前有一家供应商拥有一个定制的 ETL 包(它是更大程序的一部分),似乎需要很长时间才能完成。
我们当前的设置运行的是 SQL Server 2008 R2 标准版。涉及两台服务器,SQL Server 和另一台称为批处理服务器的服务器。基本上发生的事情是 Batch 服务器向 SQL Server 发出请求以获取表中的一组行,它将这些行存储在 Batch 服务器的内存中,并在此处进行多次转换。一旦数据被转换/清理,它就需要被加载回数据库服务器上的几个不同的表中。目前这是通过包装在 SP_PREPARE 中的一系列插入语句来完成的。然后,它对需要插入的每一行(数千万次)运行一次 sp_execute 语句。
我使用 IBM Datastage 已经有一段时间了,但我似乎记得它在默认情况下尝试类似地执行这些插入操作,结果速度非常慢。
我已经提到让他们导出一个包含修改后数据的数据文件,并允许我们批量导入这个文件,但是将数据导出到一个文件据说会对他们的代码进行重大更改,并且可能不是一个选项。
任何建议或想法将不胜感激!
安德鲁
【问题讨论】:
-
如果您当前供应商的整个流程是围绕执行此操作的效率最低的方式设计的,那么可能是时候寻找其他供应商了...
-
相信我,我不止一次建议过!谢谢你证实了我的恐惧! :-)
-
ha,
significant change to their code,在他们的循环中调用每个 sp_execute 的每一行,只需写入一个文件 -
我完全同意KM!做出这样的改变不应该是火箭科学。我主要是想看看是否还有其他关于如何有效地将数据返回数据库的想法,因为我已经没有想法了。在过去的两个月里,我刚刚结束了另一个项目,供应商一直在用数据库中的游标执行类似的任务,至少我能够自己修复他们的代码,这个他们工作的所有逻辑都在 java在另一台服务器上程序...
标签: sql-server sql-server-2008 insert etl