0

JDBC を使用して、テーブルのさまざまなパーティションに大量のデータを挿入しています。テーブルはシステム パーティション化されているため、insert ステートメントでパーティション名を指定する必要があります。

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

準備されたステートメントを使用してinsertステートメントの値をバインドしますが、パーティション名もバインドできるかどうか疑問に思っています。実際のデータを見るまで、挿入する必要があるパーティションがわからないからです。

4

1 に答える 1

2

INSERT標準の Oracle パーティショニング スキームでは、ステートメントでパーティション名を指定する必要はありません。Oracle パーティショニングの目標の 1 つは、アプリケーションに対して透過的であることです。

アプリケーションの観点からは、スキーマ オブジェクトは 1 つしか存在しません。パーティション化されたテーブルにアクセスするためにDML ステートメントを変更する必要はありません。

ステートメントでパーティションを提供することは、規則ではなく例外です。Oracle は、適切なパーティションに行を挿入するほどスマートです。

ただし、システム パーティショニングでは、パーティション名を指定する必要があります。

残念ながら、パーティション名はオブジェクト名であるため、バインド変数を使用して動的にパーティション名を指定することはできません。したがって、ステートメントを解析するときにそれを知る必要があります。

N は挿入されたパーティションの数である N の準備済みステートメントを使用することをお勧めします。N は、必要なステートメントの最小数です。

于 2013-05-29T08:46:20.713 に答える