たとえば:
BEGIN
DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE
(
table_name =>'PET1',
credential_name =>'DEF_CRED_NAME',
format => json_object('delimiter' value ',', 'recorddelimiter' value 'newline', 'characterset' value 'us7ascii'),
column_list => 'col1 number, col2 number, col3 number',
partitioning_clause => 'partition by range (col1)
(partition p1 values less than (1000) location
( ''https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/file_11.txt''),
partition p2 values less than (2000) location
( ''https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/file_21.txt''),
partition p3 values less than (3000) location
( ''https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/file_31.txt'') )'
);
END;
/
パラメータは次のとおりです:
-
table_name
: 外部表名です。
-
credential_name
: 前のステップで作成した資格証明の名前です。
-
partitioning_clause
: これは、個別パーティションのロケーション情報など、完全なパーティション化句です。
-
format
: ソース・ファイルの形式を記述するために指定できるオプションを定義: ソース・ファイルの形式を記述するために指定できるオプションを定義します。
ソース・ファイル内のデータが暗号化されている場合は、encryption
オプションを指定してformat
パラメータを指定して、データを復号化します。 データの復号化の詳細は、「オブジェクト・ストレージからのインポート中のデータの復号化」を参照してください。
-
column_list
: ソース・ファイル内の列定義のカンマ区切りリストです。
この例では、namespace-string
がOracle Cloud Infrastructureオブジェクト・ストレージのネームスペースで、bucketname
がバケット名です。 詳細については、「オブジェクト・ストレージのネームスペースについて」を参照してください。
これで、前のステップで作成した外部パーティション表に対して問合せを実行できるようになります。 Autonomous Databaseでは、外部パーティション表のパーティション化情報を利用して、問合せがオブジェクト・ストアの関連データ・ファイルにのみアクセスできるようにしています。 たとえば、次の問合せはパーティションP1からデータファイルのみを読み取ります:
SELECT * FROM pet1 WHERE col1 < 750;
DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE
で作成した外部パーティション表には、2つの非表示列file$path
およびfile$name
が含まれます。 これらの列は、レコードの起点となるファイルの識別に役立ちます。 詳細については、「外部表のMetadata列」を参照してください。
指定したフォーマット・オプションと一致しない行がソース・ファイル内にある場合、問合せはエラーを通知します。 これらのエラーを抑制するには、rejectlimitなどのDBMS_CLOUD
パラメータを使用できます。 または、作成した外部パーティション表を検証してエラー・メッセージと拒否行を表示し、書式オプションを適宜変更することもできます。 詳細については、「外部データの検証」と「外部パーティション化されたデータの検証」を参照してください。
パラメータの詳細は、「CREATE_EXTERNAL_PART_TABLEプロシージャ」を参照してください。
サポートされているクラウド・オブジェクト・ストレージ・サービスの詳細は、「DBMS_CLOUD URIの書式」を参照してください。