使用OLE DB目标插入数据

时间:2013-06-11 00:47:04

标签: sql visual-studio-2008

您好我只是SQL Server和SSIS的新手,我非常需要您的帮助。

我已将表A中的10行数据插入到另一个名为Test_Table_Destination的新表中,我也在TEST服务器中创建了该表。在OLE DB Source中我放了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行。

提前谢谢!

1 个答案:

答案 0 :(得分:0)

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

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目标中不应该有任何查询。