Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.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 在DATASTAGE中插入重复值记录中的不同记录_Sql_Oracle_Datastage - Fatal编程技术网

Sql 在DATASTAGE中插入重复值记录中的不同记录

Sql 在DATASTAGE中插入重复值记录中的不同记录,sql,oracle,datastage,Sql,Oracle,Datastage,您好,我正在使用DATASTAGE将配置单元数据导入Oracle,配置单元中没有任何主键约束,但在Oracle上我有一个组合主键。 例如,我有一个数据,它在整个记录的基础上没有重复项,但pk约束有重复项 表中有列 表名:项目详细信息-蜂箱 没有主键约束 Id制造日期项目出口日期 2018年1月12日abc 2018年3月31日 2018年1月12日cde 2018年2月28日 2018年1月15日efg 2018年4月10日 4 2018年1月12日abc 2018年4月10日 其中,制造日期和

您好,我正在使用DATASTAGE将配置单元数据导入Oracle,配置单元中没有任何主键约束,但在Oracle上我有一个组合主键。 例如,我有一个数据,它在整个记录的基础上没有重复项,但pk约束有重复项 表中有列 表名:项目详细信息-蜂箱 没有主键约束

Id制造日期项目出口日期

2018年1月12日abc 2018年3月31日

2018年1月12日cde 2018年2月28日

2018年1月15日efg 2018年4月10日

4 2018年1月12日abc 2018年4月10日

其中,制造日期和项目一起是相同结构的目标表Oracle的主键

我需要将数据推送到目标表中

但是它说一个主键违反并被中止

谁能给我一个解决办法

注:我们无法更改表的模式

这就是我使用[[twt]]的目的。它比查找和连接阶段更快

首先将输出sql从Insert更改为自定义sql

然后,您可以创建一个自定义SQL语句,如下所示:

insert into <<target table>>
select Id, mfg_date, item, exp_date from [[twt]]
where not exist (select 1 from <<target table>> where <<target table>>.id = [[twt]].id)
它会触发不存在的记录。 因为自定义sql允许使用多条语句,所以可以通过这种方式进行整个更新

通过使用[[twt]],您可以将其更改为ELT加载形式,并控制插入


谢谢。

删除重复项以避免出现不可能的错误,我不是源数据的所有者。在DataStage中有一个删除重复项阶段,所以这是可能的