powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как создать partition по полю date, который автоматически создаст партиции по неделе?
10 сообщений из 10, страница 1 из 1
Как создать partition по полю date, который автоматически создаст партиции по неделе?
    #39560075
Лиса Алиса
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как создать автоматически недельные партиции? А по две неделе? А по месяцу? Есть поле типа date, я не хочу ручками писать партиции на года вглубь, как сделать, чтобы база сама выставила партиции?
...
Рейтинг: 0 / 0
Как создать partition по полю date, который автоматически создаст партиции по неделе?
    #39560078
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
job ?
...
Рейтинг: 0 / 0
Как создать partition по полю date, который автоматически создаст партиции по неделе?
    #39560082
Лиса Алиса
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tru55,

job это я так понимаю, будущие партиции, а мне за прошедшие месяца при создании таблицы надо.
...
Рейтинг: 0 / 0
Как создать partition по полю date, который автоматически создаст партиции по неделе?
    #39560083
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лиса Алисаtru55,

job это я так понимаю, будущие партиции, а мне за прошедшие месяца при создании таблицы надо.

INTERVAL partitioning.

SY.
...
Рейтинг: 0 / 0
Как создать partition по полю date, который автоматически создаст партиции по неделе?
    #39560094
Лиса Алиса
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY,

create table
pos_data (
start_date DATE,
store_id NUMBER,
inventory_id NUMBER(6),
qty_sold NUMBER(3)
)
PARTITION BY RANGE (start_date)
INTERVAL(NUMTOYMINTERVAL(1, 'MONTH'))
(
PARTITION pos_data_p2 VALUES LESS THAN (TO_DATE('1-7-2007', 'DD-MM-YYYY')),
PARTITION pos_data_p3 VALUES LESS THAN (TO_DATE('1-8-2007', 'DD-MM-YYYY'))
);

Какие партишены указаны в скобках? pos_data_p2 и pos_data_p3? Он всем проставит партиции данным или только данным меньше 1-7-2007 и меньше 1-8-2007? И будет ли он автоматически высставлять будущие партиции?
...
Рейтинг: 0 / 0
Как создать partition по полю date, который автоматически создаст партиции по неделе?
    #39560099
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лиса АлисаОн всем проставит партиции данным или только данным меньше 1-7-2007 и меньше 1-8-2007? И будет ли он автоматически высставлять будущие партиции?

Все где start_date < 1-7-2007 пойдет в pos_data_p2. 1-7-2007 <= start_date < 1-8-2007 в pos_data_p3. Для start_date >= 1-8-2007 партиции будут создаваться автоматически по мере поступления.

SY.
...
Рейтинг: 0 / 0
Как создать partition по полю date, который автоматически создаст партиции по неделе?
    #39560103
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYпартиции будут создаваться автоматически по мере поступления.
*если мера поступления ориентирована в хронологическом порядке :)
...
Рейтинг: 0 / 0
Как создать partition по полю date, который автоматически создаст партиции по неделе?
    #39560105
Лиса Алиса
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY,

а если не обозначать стартовые партиции, он всё пропартицирует или ничего?

create table
pos_data (
start_date DATE,
store_id NUMBER,
inventory_id NUMBER(6),
qty_sold NUMBER(3)
)
PARTITION BY RANGE (start_date)
INTERVAL(NUMTOYMINTERVAL(1, 'MONTH'));
...
Рейтинг: 0 / 0
Как создать partition по полю date, который автоматически создаст партиции по неделе?
    #39560120
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лиса Алисаа если не обозначать стартовые партиции, он всё пропартицирует или ничего?


МИНЗДРАВ предупреждает: доку ORACLE курить полезно. В INTERVAL partitioned таблице должнa быть как минимум одна неинтервальная партиция.

SY.
...
Рейтинг: 0 / 0
Как создать partition по полю date, который автоматически создаст партиции по неделе?
    #39560240
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous*если мера поступления ориентирована в хронологическом порядке :)

Независимо от хронологического порядка:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
SQL> create table 
  2  pos_data ( 
  3  start_date DATE,
  4  store_id NUMBER,
  5  inventory_id NUMBER(6),
  6  qty_sold NUMBER(3)
  7  ) 
  8  PARTITION BY RANGE (start_date) 
  9  INTERVAL(NUMTOYMINTERVAL(1, 'MONTH')) 
 10  ( 
 11  PARTITION pos_data_p2 VALUES LESS THAN (TO_DATE('1-7-2007', 'DD-MM-YYYY')),
 12  PARTITION pos_data_p3 VALUES LESS THAN (TO_DATE('1-8-2007', 'DD-MM-YYYY')) 
 13  ); 

Table created.

SQL> select partition_name,high_value from user_tab_partitions where table_name = 'POS_DATA';

PARTITION_NAME       HIGH_VALUE
-------------------- --------------------------------------------------------------------------------
POS_DATA_P2          TO_DATE(' 2007-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA
POS_DATA_P3          TO_DATE(' 2007-08-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA

SQL> insert into pos_data values(date '2020-01-01',1,1,1);

1 row created.

SQL> select partition_name,high_value from user_tab_partitions where table_name = 'POS_DATA';

PARTITION_NAME       HIGH_VALUE
-------------------- --------------------------------------------------------------------------------
POS_DATA_P2          TO_DATE(' 2007-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA
POS_DATA_P3          TO_DATE(' 2007-08-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA
SYS_P3165            TO_DATE(' 2020-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA

SQL> insert into pos_data values(date '2019-01-01',1,1,1);

1 row created.

SQL> select partition_name,high_value from user_tab_partitions where table_name = 'POS_DATA';

PARTITION_NAME       HIGH_VALUE
-------------------- --------------------------------------------------------------------------------
POS_DATA_P2          TO_DATE(' 2007-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA
POS_DATA_P3          TO_DATE(' 2007-08-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA
SYS_P3165            TO_DATE(' 2020-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA
SYS_P3166            TO_DATE(' 2019-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA

SQL> insert into pos_data values(date '2018-01-01',1,1,1);

1 row created.

SQL> select partition_name,high_value from user_tab_partitions where table_name = 'POS_DATA';

PARTITION_NAME       HIGH_VALUE
-------------------- --------------------------------------------------------------------------------
POS_DATA_P2          TO_DATE(' 2007-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA
POS_DATA_P3          TO_DATE(' 2007-08-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA
SYS_P3165            TO_DATE(' 2020-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA
SYS_P3166            TO_DATE(' 2019-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA
SYS_P3167            TO_DATE(' 2018-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA

SQL> insert into pos_data values(date '2025-01-01',1,1,1);

1 row created.

SQL> select partition_name,high_value from user_tab_partitions where table_name = 'POS_DATA';

PARTITION_NAME       HIGH_VALUE
-------------------- --------------------------------------------------------------------------------
POS_DATA_P2          TO_DATE(' 2007-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA
POS_DATA_P3          TO_DATE(' 2007-08-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA
SYS_P3165            TO_DATE(' 2020-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA
SYS_P3166            TO_DATE(' 2019-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA
SYS_P3167            TO_DATE(' 2018-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA
SYS_P3168            TO_DATE(' 2025-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA

6 rows selected.

SQL> 



SY.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как создать partition по полю date, который автоматически создаст партиции по неделе?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]