機械翻訳について

外部データの問合せ

クラウドのファイルのデータを問い合せるには、最初にオブジェクト・ストレージ資格証明をAutonomous Databaseに格納してから、PL/SQLプロシージャDBMS_CLOUD.CREATE_EXTERNAL_TABLEを使用して外部表を作成する必要があります。

プロシージャDBMS_CLOUD.CREATE_EXTERNAL_TABLEを使用して、アタッチされたファイル・システムまたはローカル・ファイル・システムの外部データを問い合せることもできます。

DBMS_CLOUD.CREATE_EXTERNAL_TABLEの手順では、次のようなサポートされているクラウド・オブジェクト・ストレージ・サービスの外部ファイルがサポートされます:

  • Oracle Cloud Infrastructureオブジェクト・ストレージ

  • Azure BlobストレージまたはAzure Data Lakeストレージ

  • Amazon S3

  • Amazon S3-Compatible(次を含む): Oracle Cloud Infrastructure Object StorageGoogle Cloud StorageおよびWasabi Hot Cloud Storage

  • GitHubリポジトリ

この例のソース・ファイルchannels.txtには、次のデータがあります。

S,Direct Sales,Direct
T,Tele Sales,Direct
C,Catalog,Indirect
I,Internet,Indirect
P,Partners,Others
  1. プロシージャDBMS_CLOUD.CREATE_CREDENTIALを使用してオブジェクト・ストアの資格証明を保存します。

    たとえば:

    BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'DEF_CRED_NAME',
        username => 'adb_user@example.com',
        password => 'password' );
    END;
    /
    

    リソース・プリンシパル資格証明を有効にした場合、Oracle Cloud Infrastructureオブジェクト・ストアにアクセスするための資格証明の作成は必要ありません。 詳細については、「リソース・プリンシパルを使用したOracle Cloud Infrastructureリソースへのアクセス」を参照してください。

    この操作では、資格証明がデータベースに暗号化された形式で保存されます。  資格証明名には任意の名前を使用できます。 このステップは、オブジェクト・ストア資格証明が変更されないかぎり、1回のみ実行すれば済みます。  資格証明を保存したら、外部表の作成に同じ資格証明名を使用できます。

    様々なオブジェクト・ストレージ・サービスのusernameおよびpasswordパラメータの詳細は、「CREATE_CREDENTIALプロシージャ」を参照してください。

  2. DBMS_CLOUD.CREATE_EXTERNAL_TABLEプロシージャを使用して、ソース表の上に外部表を作成します。

    DBMS_CLOUD.CREATE_EXTERNAL_TABLEプロシージャでは、サポートされているクラウド・オブジェクト・ストレージ・サービスの外部ファイルがサポートされます。 資格証明は表レベルのプロパティであるため、外部ファイルは同じオブジェクト・ストア上にある必要があります。

    たとえば:

    BEGIN
       DBMS_CLOUD.CREATE_EXTERNAL_TABLE(
        table_name =>'CHANNELS_EXT',
        credential_name =>'DEF_CRED_NAME',
        file_uri_list =>'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/channels.txt',
        format => json_object('delimiter' value ','),
        column_list => 'CHANNEL_ID VARCHAR2(2), CHANNEL_DESC VARCHAR2(20), CHANNEL_CLASS VARCHAR2(20)' );
    END;
    /
    

    パラメータは次のとおりです:

    この例では、namespace-stringがOracle Cloud Infrastructureオブジェクト・ストレージのネームスペースで、bucketnameがバケット名です。 詳細については、「オブジェクト・ストレージのネームスペースについて」を参照してください。

    ノート:

    Autonomous Databaseでは、圧縮されたデータ形式など、様々なソース・ファイル形式がサポートされています。 サポートされる圧縮タイプについては、「DBMS_CLOUDパッケージ・フォーマット・オプション」およびDBMS_CLOUD compression形式オプションを参照してください。

    これで、前のステップで作成した外部表に問合せを実行できます。 たとえば:

    SELECT count(*) FROM channels_ext;

    デフォルトでは、データベースは外部データ・ファイルのすべての行が有効であることを想定し、ターゲット・データ型定義とファイルのフォーマット定義の両方と一致します。 指定したフォーマット・オプションと一致しない行がソース・ファイル内にある場合、問合せはエラーを通知します。 これらのエラーを抑制するには、rejectlimitなどのDBMS_CLOUDパラメータを使用できます。 かわりに、作成した外部表を検証し、エラー・メッセージと拒否された行を確認して、フォーマット・オプションを適宜変更することもできます。 詳細については、「外部データの検証」を参照してください。

    パラメータの詳細は、「CREATE_EXTERNAL_TABLEプロシージャ」を参照してください。

    サポートされているクラウド・オブジェクト・ストレージ・サービスの詳細は、「DBMS_CLOUD URIの書式」を参照してください。

外部表のMetadata列

外部表のメタデータは、問合せの実行時にデータの取得元を特定するのに役立ちます。

DBMS_CLOUD.CREATE_EXTERNAL_TABLEDBMS_CLOUD.CREATE_EXTERNAL_PART_TABLEまたはDBMS_CLOUD.CREATE_HYBRID_PART_TABLEを使用して作成した外部表には、2つの非表示列file$pathおよびfile$nameが含まれます。 これらの列は、レコードの起点となるファイルの識別に役立ちます。

  • file$path: オブジェクト名の先頭までのファイル・パス・テキストを指定します。

  • file$name: 最後の「/」に続くすべてのテキストを含むオブジェクト名を指定します。

たとえば:

SELECT genre_id, name, file$name, file$path FROM ext_genre
     WHERE rownum <= 2;

genre_id      name        file$name     file$path
--------      ---------   -----------   ----------------------
1             Action      genre.csv     https://objectstorage.us-ashburn-1.oraclecloud.com/n/namespace-string/b/moviestream_gold/o/genre
2             Adventure   genre.csv     https://objectstorage.us-ashburn-1.oraclecloud.com/n/namespace-string/b/moviestream_gold/o/genre

非表示列の詳細は、「非表示列」を参照してください。