Sql 在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日 其中,制造日期和项目一起是相同结构的目标表Oracle的主键 我需要将数据推送到目标表中 但是它说一个主键违反并被中止 谁能给我一个解决办法 注:我们无法更改表的模式这就是我使用[[twt]]的目的。它比查找和连接阶段更快 首先将输出sql从Insert更改为自定义sql 然后,您可以创建一个自定义SQL语句,如下所示: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日 其中,制造日期和
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中有一个删除重复项阶段,所以这是可能的