ディレクトリ内のファイルからのデータのロードまたはデータの問合せ

DBMS_CLOUDプロシージャを使用すると、接続されたネットワーク・ファイル・システムに作成されたディレクトリなど、ディレクトリ内のファイルからデータをロードできます。これらのプロシージャを使用して、データの問合せに使用できる外部表を作成することもできます。

次のDBMS_CLOUDプロシージャでは、ディレクトリからデータベースへのデータのロードがサポートされています。

  • DBMS_CLOUD.COPY_COLLECTION
  • DBMS_CLOUD.COPY_DATA

また、次のDBMS_CLOUDプロシージャでは、ディレクトリ内のファイルのデータから外部表を作成することもできます。

  • DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE
  • DBMS_CLOUD.CREATE_EXTERNAL_TABLE
  • DBMS_CLOUD.CREATE_HYBRID_PART_TABLE

プロシージャに応じて、file_uri_listパラメータまたはpartitioning_clauseパラメータのいずれかを使用して、1つ以上のディレクトリ内のファイルを指定します。

ディレクトリからデータをロードするには、credential_nameパラメータを含める必要はありませんが、ディレクトリに対するREADオブジェクト権限が必要です。

たとえば、DBMS_CLOUD.COPY_DATAを使用して、既存の表にデータをロードできます。

  1. 既存のディレクトリを使用するか、ディレクトリを作成するか、ソース・ファイルのネットワーク・ファイル・システムをアタッチします。

    Autonomous Databaseインスタンスにローカル・ディレクトリを作成する方法の詳細は、「Autonomous Databaseのディレクトリの作成」を参照してください。

    ロードするデータを含むネットワーク・ファイル・システムのアタッチの詳細は、Autonomous Databaseへのネットワーク・ファイル・システムのアタッチを参照してください。

  2. DBMS_CLOUDプロシージャを使用してデータをロードします。

    たとえば:

    CREATE TABLE CHANNELS
       (channel_id CHAR(1),
        channel_desc VARCHAR2(20),
        channel_class VARCHAR2(20)
       );
    /
    
    BEGIN
     DBMS_CLOUD.COPY_DATA(
        table_name => 'CHANNELS',
        file_uri_list => 'MY_DIR:channels.txt',
        format => json_object('delimiter' value ',')
     );
    END;
    /
    

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

    • table_name: ターゲット表の名前です。

    • file_uri_list: ロードするソース・ファイルのディレクトリおよびファイル名指定です。

      1つのディレクトリと1つ以上のファイル名を指定することも、ディレクトリとファイル名のカンマ区切りリストを使用することもできます。ディレクトリを指定する形式は:'MY_DIR:filename.ext'です。デフォルトでは、ディレクトリ名MY_DIRはデータベース・オブジェクトであり、大/小文字は区別されません。ファイル名は、大/小文字が区別されます。

      ディレクトリ内のファイルを指定する詳細および例は、Autonomous Databaseのディレクトリからのデータのロードを参照してください。また、ディレクトリ名を引用符で囲んでディレクトリ名を大文字と小文字を区別したり、ワイルドカードの使用に関する情報も表示されます。

    • format: ソース・ファイルのフォーマット(ファイル・タイプがテキスト、ORC、Parquet、Avroのいずれかなど)を記述するために指定できるオプションを定義します。

詳細は、COPY_DATAプロシージャを参照してください。

ネットワーク・ファイル・システムのアタッチの詳細は、Autonomous Databaseへのネットワーク・ファイル・システムのアタッチを参照してください。