2

У меня есть таблица в оракула:Как разбить таблицу оракула на столбец даты?

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

И я хочу разделить эту таблицу по столбцу stmtvaluedate. Моя цель - создать новый раздел через месяц.

Есть ли хороший сценарий, для этого? Или мне нужно создавать статические числа разделов?

Лучшее: если пройдет месяц, новый раздел будет создан автоматически.

Может ли кто-нибудь дать мне пример о том, как разбивать таблицу на столбец даты после каждого месяца? Если автоматическое разбиение невозможно, мне понадобится пример, который создает разделы в течение года с помощью столбца даты примерно каждый месяц.

Спасибо!

+0

[это] (http://docs.oracle.com/cd/E18283_01/server.112/e16541/part_admin001.htm#BAJHFFBE) может поможет. Вы можете использовать таблицу с разбивкой по интервалам. Но он работает только для Oracle 11.1 и выше – Tatiana

+0

Спасибо. И могу ли я разделать ** неделю ** или ** день ** тоже? – victorio

ответ

7

То, что вы хотите сделать, вполне возможно. Это следует сделать это:

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'))); 
+0

А что, если я хочу разбить таблицу не на mounth, а на неделю или на день? Являются ли эти Rigth ?: ** ИНТЕРВАЛ (NUMTOYMINTERVAL (1, 'Неделя')) ** или ** ИНТЕРВАЛ (NUMTOYMINTERVAL (1, 'День')) ** И что будет пункт дата 01-JAN -2000? Означает ли это, если значение * stmtvaluedate * меньше 2000.01.01, чем эта строка войдет в раздел? – victorio

+1

Используйте 'NUMTODSINTERVAL' для дней и недель. И да, предложение 1/1/2000 заключается в том, чтобы сообщить Oracle о том, чтобы все данные до указанной даты помещались в один раздел. Если у вас много исторических данных, эта дата может оказаться неприемлемой. –

+0

отлично, спасибо! – victorio

Смежные вопросы