从DATASTAGE中的重复值记录中插入不同的记录。

问题描述 投票:0回答:1

你好,我正在使用DATASTAGE将hive数据导入Oracle,我在hive中没有任何主键约束,但在Oracle上我有一个组合主键。例如,我有一个数据,它没有基于整个记录的重复,但pk约束有重复Table有columnsTable名称:item_details ;--(hive)没有主键约束。

Id mfg_date item exp_date


1 12-01-2018 Abc 31-03-2018

2 12-01-2018 CDE 28-02-2018

3 15-01-2018 efg 10-04-2018

4 12-01-2018 Abc 10-04-2018

其中mfg_date和item是目标表(Oracle)的主键,而目标表的结构是一样的。

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

但它说主键违反并被中止。

谁能给我一个解决方案。

Ps. 我们不能改变表的模式

sql oracle datastage
1个回答
0
投票

这是我使用的 [[twt]] 这比做Lookup和join阶段要快。

首先将输出sql从 InsertCustom 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)

它将删除那些不存在的记录. 因为 custom sql 允许多条语句,你可以用这种方式完成整个更新。

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

谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.