Oracle Insert into partition привязка имени раздела в JDBC

Я использую JDBC для вставки большого количества данных в разные разделы таблицы. Таблица разделена на систему, что означает, что мне нужно указать имя раздела в операторе вставки.

INSERT INTO T Partition P values (...);

Я использую подготовленный оператор для привязки значений оператора вставки, и теперь мне интересно, можно ли привязать и имя раздела, потому что я не знаю, какой раздел мне нужно вставить, пока не увижу фактические данные.


person Wudong    schedule 29.05.2013    source источник
comment
Ты пробовал это? Что за сообщение об ошибке?   -  person Beryllium    schedule 29.05.2013
comment
я предполагаю, что вы не можете по той же причине, по которой вы не можете привязать имя таблицы. вам придется использовать сжатие строк.   -  person haki    schedule 29.05.2013
comment
будет ли использовать конкатенацию строк для увеличения производительности при вставке по сравнению с использованием подготовленного оператора? Мне действительно нужно вставить огромный набор данных.   -  person Wudong    schedule 29.05.2013


Ответы (1)


В стандартной схеме разделения Oracle вам не нужно указывать имя раздела в операторе INSERT. Одна из целей разделения Oracle - быть прозрачным для приложений:

С точки зрения приложения существует только один объект схемы. Операторы DML не требуют модификации для доступа к многораздельным таблицам.

Предоставление раздела в операторе является исключением, а не правилом: Oracle достаточно умен, чтобы вставить строку в правильный раздел.

Однако для System Partitioning необходимо предоставить имя раздела.

К сожалению, вы не можете указать имя раздела динамически с помощью переменной связывания, так как имя раздела является именем объекта и, следовательно, должно быть известно при синтаксическом анализе оператора.

Я предлагаю вам использовать подготовленный оператор N, где N - количество вставленных разделов. N - минимальное количество необходимых вам утверждений.

person Vincent Malgrat    schedule 29.05.2013
comment
Системные разделы не имеют ключей разделов, поскольку это таблица с разделами на разделы, имя раздела должно быть предоставлено для всех операций, связанных с разделами. - person Wudong; 29.05.2013
comment
@wudong Я не знал об этой новой схеме разделов. Всегда есть чему поучиться в Oracle! - person Vincent Malgrat; 29.05.2013