Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.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
使用SQL Server DTS包有条件地插入/更新目标表中的行_Sql_Sql Server_Database_Tsql_Dts - Fatal编程技术网

使用SQL Server DTS包有条件地插入/更新目标表中的行

使用SQL Server DTS包有条件地插入/更新目标表中的行,sql,sql-server,database,tsql,dts,Sql,Sql Server,Database,Tsql,Dts,我想创建一个DTS包,将数据从Oracle表拉入SQL2K 桌子如何插入SQL2K表中尚未包含的行,以及 是否更新SQL2K表中已存在的行 我想我可以截断并重新填充整个表,或者创建一个 临时表,然后从临时表更新/插入到 目的地表 有没有更容易使用DTS的方法 谢谢 Rokal是否保留相同的主键值 如果您有很多选项,那么某些版本的SQL支持MERGE语句,它将按照您的要求进行更新或插入 或者你也可以自己写 将所有行加载到SQL数据库中的暂存表中,并逐行检查主SQL表中是否存在主键。如果键存在,则更

我想创建一个DTS包,将数据从Oracle表拉入SQL2K 桌子如何插入SQL2K表中尚未包含的行,以及 是否更新SQL2K表中已存在的行

我想我可以截断并重新填充整个表,或者创建一个 临时表,然后从临时表更新/插入到 目的地表

有没有更容易使用DTS的方法

谢谢


Rokal是否保留相同的主键值

如果您有很多选项,那么某些版本的SQL支持MERGE语句,它将按照您的要求进行更新或插入

或者你也可以自己写


将所有行加载到SQL数据库中的暂存表中,并逐行检查主SQL表中是否存在主键。如果键存在,则更新行,如果不存在,则插入行。

是,源和目标中的主键值将匹配

我希望在不使用临时(暂存)表的情况下完成这项任务


另外,我使用的是sql server 2000,因此合并语句不可用。

您可以在DTS包中使用两个数据驱动的查询任务来执行此操作:一个用于插入,另一个用于更新。数据驱动的查询任务使用起来有点麻烦,但它们可以工作。我还使用动态t-sql在SQLServer2000中与AS/400数据库进行了合并。您需要编写一个t-sql脚本,输出psql并在链接到Oracle数据库的服务器上运行它

更新: DTS“数据驱动查询任务”将允许您在不使用临时表或链接服务器的情况下,将数据从DTS中的sql server连接插入到DTS中的oracle server连接

更新2;以下是关于我的意思的更多信息:


TSQL无法在同一条语句中进行插入或更新,但您可以很容易地在两条语句中进行插入或更新(如上所述)

报表1:

DELETE FROM dbo.WhateverTable 
WHERE WhateverTableID IN (SELECT WhateverTableID FROM MySource)
报表2:

INSERT INTO dbo.WhateverTable 
SELECT * FROM MySource
另外,有什么原因不想使用临时表吗?

试试:

DELETE FROM dbo.WhateverTable WHERE WhateverTableID IN (SELECT WhateverTableID FROM MySource)
它可能非常慢,请改用join:

Delete a
from firstTable a join secondTable b on a.id = b.id

是的,我可以创建一个数据库链接并编写两个数据驱动的查询。我希望有一种不使用链接服务器或临时表的方法。我在DTS中找到了一些关于数据驱动查询任务的附加信息。让我知道它是否有帮助-我可能能够挖掘(或制作)并向您发送一个示例。Timothy Khouri:您的方法将需要正确的数据库链接?合并的行为类似于tsql中一条语句中的插入或更新