[英]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.