機械翻訳について

行区切りドキュメントのJSONファイルのコレクションへのロード

クラウドのコレクションからデータをロードするには、最初にオブジェクト・ストレージ資格証明をAutonomous Databaseに格納してから、DBMS_CLOUD.COPY_COLLECTIONプロシージャを使用してドキュメントをコレクションにロードする必要があります。

この例では、JSON値を行区切りファイルからロードし、JSONファイルmyCollection.jsonを使用します。 各行の各値は、データベース上のコレクションに単一のドキュメントとしてロードされます。

このようなファイルの例を次に示します。 これには3つの線分があり、線分ごとに1つのオブジェクトがあります。 これらの各オブジェクトは、個別のJSONドキュメントとしてロードされます。

{ "name" : "apple", "count": 20 }
{ "name" : "orange", "count": 42 }
{ "name" : "pear", "count": 10 }

myCollection.jsonからデータベースにデータをロードする前に、ファイルをオブジェクト・ストアにコピーします:

  • オブジェクト・ストアにバケットを作成します。 たとえば、Oracle Cloud Infrastructure Object StorageリンクからOracle Cloud Infrastructure Object Storageバケットを作成し、選択したコンパートメントで「バケットの作成」をクリックするか、次のOCI CLIコマンドなどのコマンドを使用してバケットを作成します:

    oci os bucket create --name fruit_bucket -c <compartment id>
  • JSONファイルをオブジェクト・ストア・バケットにコピーします。 たとえば、次のOCI CLIコマンドを使用して、JSONファイルをOracle Cloud Infrastructure Object Storage上のfruit_bucketにコピーします:

    
    oci os object put --bucket-name fruit_bucket \
                      --file "myCollection.json"

次のように、JSONファイルをオブジェクト・ストアからデータベース上のfruitというコレクションにロードします:

  1. 次の例に示すように、プロシージャDBMS_CLOUD.CREATE_CREDENTIALを使用してオブジェクト・ストア資格証明を格納します:
    SET DEFINE OFF
    BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'DEF_CRED_NAME',
        username => 'adb_user@example.com',
        password => 'password'
      );
    END;
    /

    この操作では、資格証明がデータベースに暗号化された形式で保存されます。 資格証明名には任意の名前を使用できます。 このステップは、オブジェクト・ストア資格証明が変更されないかぎり、1回のみ実行すれば済みます。 資格証明を格納すると、すべてのドキュメントのロードに同じ資格証明名を使用できます。

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

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

    ノート:

    SQL*PlusやSQL Developerなどのツールの中には、アンパサンド文字(&)を特殊文字として使用するものがあります。 パスワードにアンパサンド文字が含まれている場合は、例に示すように、これらのツールでSET DEFINE OFFコマンドを使用して特殊文字を無効にし、資格証明を適切に作成します。
  2. プロシージャDBMS_CLOUD.COPY_COLLECTIONを使用して、データをコレクションにロードします。
    
    BEGIN  
     DBMS_CLOUD.COPY_COLLECTION(    
        collection_name => 'fruit',
        credential_name => 'DEF_CRED_NAME',
        file_uri_list   =>
          'https://objectstorage.us-ashburn-1.oraclecloud.com/n/namespace-string/b/fruit_bucket/o/myCollection.json',
        format          =>
          JSON_OBJECT('recorddelimiter' value '''\n''')  );
    END;
    /
    

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

    • collection_name: ターゲット・コレクションの名前です。

    • credential_name: 前のステップで作成した資格証明の名前です。 credential_nameパラメータは、Oracleオブジェクトのネーミング規則に準拠している必要があります。 詳細については、「データベース・オブジェクトのネーミング・ルール」を参照してください。

    • file_uri_list: ロードするソース・ファイルのカンマ区切りリストです。

    • format: ソース・ファイルの形式を記述するために指定できるオプションを定義します。 JSONデータのロード中は、フォーマット・オプションcharacterset, compression, encryption, ignoreblanklines, jsonpath, maxdocsize, recorddelimiter, rejectlimit, type, unpackarraysがサポートされます。 その他のフォーマットを指定すると、エラーが発生します。

      ソース・ファイル内のデータが暗号化されている場合は、encryptionオプションを指定してformatパラメータを指定して、データを復号化します。 データの復号化の詳細は、「オブジェクト・ストレージからのインポート中のデータの復号化」を参照してください。

      詳細については、「DBMS_CLOUDパッケージ・フォーマット・オプション」を参照してください。

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

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

    データベース上のコレクションfruitには、myCollection.jsonファイル内の各行に1つのドキュメントが含まれるようになりました。