0

我已将表 A 中的 10 行数据插入到另一个名为 Test_Table_Destination 的新表中,该表也是我在 TEST 服务器中创建的。在 OLE DB 源中,我放置了 select 语句。

  SELECT top 10 ResourceID, ShortName, SupervisorID from BI_Test_DB.dbo.Resource

在 OLE DB 目标编辑器中,我选择表或视图 - 快速加载。

在我的第一次尝试中 - 运行包后,它变成绿色并成功。10 行已添加到新创建的 Test_Table_Destination

现在我的问题从这里开始:

在我的第二次尝试中-当我尝试将 OLE DB 源中的脚本更改为..

SELECT top 20 ResourceID, ShortName, SupervisorID from BI_Test_DB.dbo.Resource

当然,我的目标是在我第一次尝试运行包时加载前 20 行而不重复或复制前 10 行,所以我将脚本更改为这个。

INSERT INTO dbo.Test_Table_Destination
 SELECT top 20 ResourceID, ShortName, SupervisorID from BI_Test_DB.dbo.Resource
 WHERE ResourceID NOT IN (SELECT ID FROM dbo.Test_Table_Destination)

但它不起作用..所以我尝试将脚本放在 OLE DB 目标编辑器内的 SQL 命令编辑器中,在 sql 命令文本下.. 我把这个脚本

INSERT INTO dbo.Test_Table_Destination
SELECT top 20 ResourceID, ShortName, SupervisorID from BI_Test_DB.dbo.Resource
 WHERE ResourceID NOT IN (SELECT ID FROM dbo.Test_Table_Destination)

而且我不断收到错误。我该怎么办?如何在不复制或重复先前加载的相同数据的情况下将数据插入新表或旧表?

理想情况下,它现在应该在我第二次尝试运行包时重复前 10 行。我只想查看前 20 行。

先感谢您!

4

1 回答 1

0

您的 OLE DB 源不能有 INSERT 语句,您只提供一个查询来选择要传递到目标的值,因此将源查询更改为:

SELECT top 20 ResourceID, ShortName, SupervisorID from BI_Test_DB.dbo.Resource
 WHERE ResourceID NOT IN (SELECT ID FROM dbo.Test_Table_Destination)

单击“评估”以确保它选择了您要插入的 20 条记录。

您的 OLE DB 目标中应该不需要查询。

于 2013-06-11T01:33:19.573 回答