映射到一个大表有大约30亿条记录。
该表在RECORDDATE
列上具有分区,我昨天刚刚将数据加载到阶段表中,并且在阶段表加载完成后,我使用exchange_partition
将数据加载到主表中。
这很好。但是我们需要将分区放在不同的列(OTHERDATECOLUMN
)上,但是我仍然想在RECORDDATE
列上获取数据。所以我不能使用exchange_partition
,我需要先删除记录,然后直接插入主表。这很慢。
我该如何解决?
预先感谢
查看所有评论后,我看不到任何快速灵巧的解决方案。使用简单的删除-尽管需要很长时间,否则...
[分几步尝试依次加载数据,如下所示:
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)
我希望我能使自己清楚:)