首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle /SQL:从分区表的两个分区中选择不同的FIELD1、FIELD2

Oracle /SQL:从分区表的两个分区中选择不同的FIELD1、FIELD2
EN

Stack Overflow用户
提问于 2015-11-16 16:09:07
回答 1查看 306关注 0票数 0

我有一个带有字段MY_DATE的分区表,从1999年到2017年,每个月的第一天都是这样。

例如,它包含有01/01/2015、01/02/2015、.的记录。01/12/2015,如01/01/1999、01/02/1999等。

字段MY_DATE是分区字段。

我想以最有效的方式将两个相邻分区(月份M和月M-1)的field2和field3的不同值复制到另一个表中,以便找到整个日期的不同耦合(field2,field3)。

只有当目标表未被分区时,Exchange分区才能工作,但是当复制第二个相邻分区的数据时,我会收到错误,

"ORA-14099:表中的所有行都不符合指定分区的条件“。

我用的是这样的说法:

代码语言:javascript
复制
ALTER TABLE MY_USER.MY_PARTITIONED_TABLE EXCHANGE PARTITION PART_P201502 WITH TABLE MY_USER.MY_TABLE

当然,MY_PARTITIONED_TABLE和MY_TABLE有相同的字段,但是第一个字段是按照上面所述进行分区的。

请假设MY_PARTITIONED_TABLE是一个拥有大约5亿条记录的大表。

目标是找到两个相邻分区的不同的(field2,field3)值对。

我的方法是:复制分区M的数据,复制分区M1的数据,然后从FIELD2中选择DISTINCT FIELD3。

非常感谢你考虑我的要求。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-16 16:54:18

我想复制一下..。

请注意,EXCHANGE分区不执行复制,而是执行EXCHANGE。即切换大表和临时表的分区内容。如果对两个不同的分区和相同的临时表执行两次此操作,则会得到所收到的错误。

要复制(解压缩数据而不更改大表),可以使用

代码语言:javascript
复制
create table tab1 as 
select * from bigtable partition (partition_name1)

create table tab2 as 
select * from bigtable partition (partition_name2)

在准备就绪之后,源表保持不变--简单地删除两个临时表。您只需要为这两个分区增加空间。

也许您可以在不复制数据的情况下执行查询。

代码语言:javascript
复制
with tmp as (
select * from bigtable partition (partition_name1)
union all
select * from bigtable partition (partition_name2)
)
select ....
from tmp;

祝好运!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33739735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档