繁体   English   中英

如何按日期列对oracle表进行分区?

[英]How to partition an oracle table by a date column?

我在 oracle 中有一张表:

CREATE TABLE transaction (
    id INT NOT NULL,
    accountnumber VARCHAR NOT NULL,
    stmtvaluedate DATE NOT NULL,
    ...
)

我想通过 stmtvaluedate 列对这个表进行分区。 我的目标是在一个月过去后创建一个新分区。

有什么好的剧本吗? 或者我必须创建静态数量的分区?

最好是:如果一个月过去了,将自动创建一个新分区。

谁能给我一个关于如何在每个月后按日期列对表进行分区的示例? 如果自动分区是不可能的,那么我需要一个例子,它通过日期列创建从现在到一年的分区,大约每个月。

谢谢!

您想要做的完全是可能的。 应该这样做:

CREATE TABLE transaction (
    id INT NOT NULL,
    accountnumber VARCHAR2(30) NOT NULL,
    stmtvaluedate DATE NOT NULL
)
PARTITION BY RANGE (stmtvaluedate)
INTERVAL (NUMTOYMINTERVAL (1,'MONTH')) 
    ( partition transaction_old values less than (to_date('01-JAN-2000','DD-MON-YYYY') ));

我用月度分区创建了下面的表CREATE TABLE DEMO

  ( 
   business_date date
  )
 PARTITION BY RANGE (business_date) INTERVAL (NUMTOYMINTERVAL(1,'MONTH'))
 (PARTITION p1 VALUES LESS THAN (TO_DATE('01-JAN-2019','dd-MON-yyyy'))
  );

 insert into DEMO values('27-SEP-20')\n

insert into DEMO values('21-SEP-19')
insert into DEMO values('27-JUN-20')

在这里,oracle的四个分区用P1创建了一个分区,其他3个用SYS P277 ..创建了分区。

我正在尝试从Spring Boot API中选择查询,我将如何做到这一点。 如果我们不知道其余的三个分区名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM