Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用向导在SQLServer2008中跨表多步骤数据导入_Sql_Sql Server_Tsql_Import - Fatal编程技术网

使用向导在SQLServer2008中跨表多步骤数据导入

使用向导在SQLServer2008中跨表多步骤数据导入,sql,sql-server,tsql,import,Sql,Sql Server,Tsql,Import,我相信这可能很容易,但我不确定如何最好地去做 我需要执行一个相当大的10000000行的常规导入/导出作业,运行一个查询,而不是直接的表到表映射。问题是这个过程有三个不同的步骤,第二和第三个步骤取决于第一个步骤中选择的数据,并且发生在不同的服务器上 让我把它分解一下 步骤1是从服务器1上的Customer_证据表中选择这1000万行,并将其传输到服务器2上的证据表中。这是通过特定的查询完成的,因为这两个表具有不同的列和数据类型 步骤2是从服务器1上的Customer_Item表中选择与特定条件匹

我相信这可能很容易,但我不确定如何最好地去做

我需要执行一个相当大的10000000行的常规导入/导出作业,运行一个查询,而不是直接的表到表映射。问题是这个过程有三个不同的步骤,第二和第三个步骤取决于第一个步骤中选择的数据,并且发生在不同的服务器上

让我把它分解一下

步骤1是从服务器1上的Customer_证据表中选择这1000万行,并将其传输到服务器2上的证据表中。这是通过特定的查询完成的,因为这两个表具有不同的列和数据类型

步骤2是从服务器1上的Customer_Item表中选择与特定条件匹配的所有数据,并将它们传输到服务器2上的Item表中。但是,我只需要根据步骤1中传输的数据选择与密钥匹配的数据。这就是问题的核心——我对第2步的选择取决于是否针对不同服务器上的表进行连接

步骤3与步骤2基本相同,只是使用了不同的选择标准。我仍然需要只获取具有在步骤1中导入的密钥匹配的行

服务器之间的关系不是固定的,这一事实使问题更加复杂。前一天我可能在服务器1和服务器2之间传输,下一天可能在服务器1和服务器3之间传输。这些服务器通常位于不同的域中。因此,每次设置链接服务器都不是一个简单或现实的选择

现在我很清楚,简单的解决方案是,作为步骤2的一部分,将步骤1中使用的查询重新运行到临时表中,并根据临时表进行连接。但对于一千万排来说,这将是非常昂贵的,我会想。还是我错了


还是有更好的解决方案?

对于大表步骤1上的连接条件,您需要所有列还是只需要键?如果您只需要这些键,那么在联接查询中创建一个只包含键和EXISTS子句的临时表就不会太贵了。

我认为只需要这些键就足够了。但是如何在导入/导出向导中跨两个数据库管理连接?它显然是为了一次只做一分贝。目前,我正在将此作为一个两步手动过程来进行,但这并不理想。您使用的是SSI还是其他什么?我的意思是我不理解有关导入/导出向导的问题。如果您使用的是SSIS,那么在第二个数据流的源中,您可以有一个查询,该查询在具有ID的临时表和具有EXISTS或in甚至内部联接的Customer_Item表之间进行联接。