ETL数据超过一列,但将分区放在另一列中。如何更快?

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

映射到一个大表有大约30亿条记录。

该表在RECORDDATE列上具有分区,我昨天刚刚将数据加载到阶段表中,并且在阶段表加载完成后,我使用exchange_partition将数据加载到主表中。

这很好。但是我们需要将分区放在不同的列(OTHERDATECOLUMN)上,但是我仍然想在RECORDDATE列上获取数据。所以我不能使用exchange_partition,我需要先删除记录,然后直接插入主表。这很慢。

我该如何解决?

预先感谢

oracle oracle11g informatica informatica-powercenter
1个回答
0
投票

查看所有评论后,我看不到任何快速灵巧的解决方案。使用简单的删除-尽管需要很长时间,否则...

[分几步尝试依次加载数据,如下所示:

  • 检查OTHERDATECOLUMN数据集有多少个不同的RECORDDATE日期
  • 现在循环:对于OTHERDATECOLUMN中的每个日期:
    • 获取一个日期数据并加载到TEMP表中
    • 添加TARGET表中的所有数据-需要用新数据(*)替换的数据(有关说明,请参见下面的示例查询)
    • 使用Exchange partition(与原来一样)将数据从TEMP_TABLE获取到TARGET_TABLE

(*)从TARGET_TABLE加载不在TEMP_TABLE中的数据的查询

INSERT INTO TEMP_TABLE
SELECT * FROM TARGET_TABLE 
WHERE NOT EXISTS
(SELECT * FROM TEMP_TABLE WHERE TARGET_TABLE.ID = TEMP_TABLE.ID)

我希望我能使自己清楚:)

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