【发布时间】:2011-07-27 14:30:00
【问题描述】:
我确信这可能很容易,但我不确定如何最好地去做。
我需要执行一个相当大(10,000,000 行)的常规导入/导出作业,而不是直接的表到表映射。问题是这个过程有三个不同的步骤,第二步和第三步取决于第一步选择的数据,并且发生在不同的服务器上。
让我分解一下。
第 1 步是从服务器 1 上的“Customer_Evidence”表中选择这 1000 万行,然后将它们传输到服务器 2 上的“Evidence”表中。这是通过特定查询完成的,因为这两个表具有不同的列和数据类型。
第 2 步是然后从服务器 1 上的“Customer_Item”表中选择与特定条件匹配的所有数据,并将它们传输到服务器 2 上的“Item”表。但是我只需要选择与基于键的数据匹配的数据在第 1 步中传输的数据上。这是问题的核心 - 我对第 2 步的选择取决于加入不同服务器上的表。
第 3 步与第 2 步基本相同,只是使用了不同的选择标准。我仍然需要只抓取与在步骤 1 中导入的键匹配的行。
服务器之间的关系不固定这一事实使问题更加复杂。有一天,我可能会在服务器 1 和服务器 2 之间进行传输,下一次在服务器 1 和服务器 3 之间进行传输。这些服务器通常位于不同的域中。因此,每次都设置链接服务器并不是一个简单或现实的选择。
现在我很清楚,简单的解决方案是,作为第 2 步的一部分,将第 1 步中使用的查询重新运行到一个临时表中并加入该表。但是对于一千万行来说,这将是非常昂贵的,我会想到的。还是我错了?
或者有更好的解决方案吗?
【问题讨论】:
标签: sql sql-server tsql import