ライン区切りドキュメントのJSONファイルのコレクションへのロード
クラウドのコレクションからデータをロードする場合は、最初にオブジェクト・ストレージ資格証明をAutonomous AI Databaseに格納してから、DBMS_CLOUD.COPY_COLLECTIONプロシージャを使用してドキュメントをコレクションにロードする必要があります。
この例では、行区切りファイルからJSON値をロードし、JSONファイルmyCollection.jsonを使用します。各値(各行)は、1つのドキュメントとしてデータベース上のコレクションにロードされます。
このようなファイルの例を次に示します。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という名前のコレクションをロードします:
-
次の例に示すように、プロシージャ
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コマンドを使用して特殊文字を無効化し、資格証明を適切に作成します。 -
プロシージャ
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: ソース・ファイルの形式を記述するために指定できるオプションを定義します。フォーマット・オプションcharacterset, compression, encryption, ignoreblanklines, jsonpath, maxdocsize, recorddelimiter, rejectlimit, type, unpackarraysは、JSONデータのロード時にサポートされます。これ以外のフォーマットを指定すると、エラーが発生します。ソース・ファイル内のデータが暗号化されている場合は、
encryptionオプションを指定してformatパラメータを指定してデータを復号化します。データの復号化の詳細は、オブジェクト・ストレージからのインポート中のデータの復号化を参照してください。詳細は、「DBMS_CLOUDパッケージ形式オプション」を参照してください。
ここで、
namespace-stringはOracle Cloud Infrastructureのオブジェクト・ストレージ・ネームスペースで、fruit_bucketはバケット名です。詳細は、オブジェクト・ストレージ・ネームスペースの理解およびオブジェクト・ストレージの概要を参照してください。パラメータの詳細は、「COPY_COLLECTIONプロシージャ」を参照してください。
これで、データベース上のコレクション
fruitに、myCollection.jsonファイルの各行に1つのドキュメントが含まれるようになりました。 -