JSONファイル・ソースからOracle NoSQL Databaseへの移行
この例では、Oracle NoSQL Database Migratorを使用して、JSONファイル・ソースからOracle NoSQL Databaseにデータをコピーする方法を示します。
ユースケース
複数のオプションを評価した後、組織はOracle NoSQL DatabaseをNoSQL Databaseプラットフォームとして最終決定します。ソース・コンテンツがJSONファイル形式であるため、これをOracle NoSQL Databaseに移行する方法を探しています。
例
この例では、SampleData.jsonというJSONファイルからデータを移行する方法について学習します。runMigratorユーティリティは、事前作成済の構成ファイルを渡して実行します。構成ファイルがランタイム・パラメータとして指定されていない場合、runMigratorユーティリティでは、対話型プロシージャを使用して構成を生成するように求められます。
前提条件
- 移行するソースとシンクを指定します。
- ソース: JSONソース・ファイル。
SampleData.jsonはソース・ファイルです。1行に1つのドキュメントがあり、改行文字で区切られた複数のJSONドキュメントが含まれています。{"id":6,"val_json":{"array":["q","r","s"],"date":"2023-02-04T02:38:57.520Z","nestarray":[[1,2,3],[10,20,30]],"nested":{"arrayofobjects":[{"datefield":"2023-03-04T02:38:57.520Z","numfield":30,"strfield":"foo54"},{"datefield":"2023-02-04T02:38:57.520Z","numfield":56,"strfield":"bar23"}],"nestNum":10,"nestString":"bar"},"num":1,"string":"foo"}} {"id":3,"val_json":{"array":["g","h","i"],"date":"2023-02-02T02:38:57.520Z","nestarray":[[1,2,3],[10,20,30]],"nested":{"arrayofobjects":[{"datefield":"2023-02-02T02:38:57.520Z","numfield":28,"strfield":"foo3"},{"datefield":"2023-02-02T02:38:57.520Z","numfield":38,"strfield":"bar"}],"nestNum":10,"nestString":"bar"},"num":1,"string":"foo"}} {"id":7,"val_json":{"array":["a","b","c"],"date":"2023-02-20T02:38:57.520Z","nestarray":[[1,2,3],[10,20,30]],"nested":{"arrayofobjects":[{"datefield":"2023-01-20T02:38:57.520Z","numfield":28,"strfield":"foo"},{"datefield":"2023-01-22T02:38:57.520Z","numfield":38,"strfield":"bar"}],"nestNum":10,"nestString":"bar"},"num":1,"string":"foo"}} {"id":4,"val_json":{"array":["j","k","l"],"date":"2023-02-03T02:38:57.520Z","nestarray":[[1,2,3],[10,20,30]],"nested":{"arrayofobjects":[{"datefield":"2023-02-03T02:38:57.520Z","numfield":28,"strfield":"foo"},{"datefield":"2023-02-03T02:38:57.520Z","numfield":38,"strfield":"bar"}],"nestNum":10,"nestString":"bar"},"num":1,"string":"foo"}} - シンク: Oracle NoSQL Database
- ソース: JSONソース・ファイル。
- JSONソース・ファイルの次の詳細を特定します。
- schemaPath:
<absolute path to the schema definition file containing DDL statements for the NoSQL table at the sink>。この例では、DDLファイルは
schema_json.DDLです。create table Migrate_JSON (id INTEGER, val_json JSON, PRIMARY KEY(id));Oracle NoSQL Database Migratorには、
schemaPathが指定されていない場合、デフォルト・スキーマを使用して表を作成するオプションがあります。詳細は、Oracle NoSQL Database Migratorのワークフローのソースとシンクの識別のトピックを参照してください。 - Datapath:
<absolute path to a file or directory containing the JSON data for migration>
- schemaPath:
- オンプレミスKVStoreの次の詳細を指定します。
- storename:
kvstore - helperHosts:
<hostname>:5000 - table:
Migrate_JSON
- storename:
手順
JSONソース・ファイルをSampleData.jsonからOracle NoSQL Database Cloud Serviceに移行するには、次を実行します。
- 識別されたソースおよびシンクの詳細を含む構成ファイル(JSON形式)を準備します。ソース構成テンプレートおよびシンク構成テンプレートを参照してください。
Generated configuration is: { "source" : { "type" : "file", "format" : "json", "schemaInfo" : { "schemaPath" : "/home/<username>/nosqlMigrator/schema_json.ddl" }, "dataPath" : "/home/<username>/nosqlMigrator/SampleData.json" }, "sink" : { "type" : "nosqldb", "storeName" : "kvstore", "helperHosts" : ["localhost:5000"], "table" : "Migrate_JSON", "includeTTL" : false, "schemaInfo" : { "useSourceSchema" : true }, "overwrite" : true, "requestTimeoutMs" : 5000 }, "abortOnError" : true, "migratorVersion" : "1.7.0" } - コマンド・プロンプトを開き、Oracle NoSQL Database Migratorユーティリティを抽出したディレクトリに移動します。
--configまたは-cオプションを使用して構成ファイルを渡し、runMigratorコマンドを実行します。[~/nosql-migrator-1.7.0]$./runMigrator --config <complete/path/to/the/config/file>- 次に示すように、ユーティリティはデータの移行に進みます。
Migrate_JSON表は、schemaPathに指定されたスキーマでシンクに作成されます。creating source from given configuration: [INFO] source creation completed [INFO] creating sink from given configuration: [INFO] sink creation completed [NFO] creating migrator pipeline [INFO] [nosqldb sink] : start loading DDLs [nosqldb sink] : executing DDL: create table Migrate_JSON (id INTEGER, val_json JSON, PRIMARY KEY(id)) [INFO] [nosqldb sink] : completed loading DDLs [INFO] migration started [INFO] Start writing data to OnDB Sink [INFO] executing for source:SampleData [INFO] [json file source] : start parsing JSON records from file: SampleData.json [INFO] Writing data to OnDB Sink completed. [INFO] migration completed. Records provided by source=4, Records written to sink=4, Records failed=0,Records skipped=0. Elapsed time: 0min 0sec 81ms Migration completed.
検証
java -jar lib/sql.jar -helper-hosts localhost:5000 -store kvstoreSELECT * FROM Migrate_JSON{"id":7,"val_json":{"array":["a","b","c"],"date":"2023-02-20T02:38:57.520Z","nestarray":[[1,2,3],[10,20,30]],"nested":{"arrayofobjects":[{"datefield":"2023-01-20T02:38:57.520Z","numfield":28,"strfield":"foo"},{"datefield":"2023-01-22T02:38:57.520Z","numfield":38,"strfield":"bar"}],"nestNum":10,"nestString":"bar"},"num":1,"string":"foo"}}
{"id":3,"val_json":{"array":["g","h","i"],"date":"2023-02-02T02:38:57.520Z","nestarray":[[1,2,3],[10,20,30]],"nested":{"arrayofobjects":[{"datefield":"2023-02-02T02:38:57.520Z","numfield":28,"strfield":"foo3"},{"datefield":"2023-02-02T02:38:57.520Z","numfield":38,"strfield":"bar"}],"nestNum":10,"nestString":"bar"},"num":1,"string":"foo"}}
{"id":4,"val_json":{"array":["j","k","l"],"date":"2023-02-03T02:38:57.520Z","nestarray":[[1,2,3],[10,20,30]],"nested":{"arrayofobjects":[{"datefield":"2023-02-03T02:38:57.520Z","numfield":28,"strfield":"foo"},{"datefield":"2023-02-03T02:38:57.520Z","numfield":38,"strfield":"bar"}],"nestNum":10,"nestString":"bar"},"num":1,"string":"foo"}}
{"id":6,"val_json":{"array":["q","r","s"],"date":"2023-02-04T02:38:57.520Z","nestarray":[[1,2,3],[10,20,30]],"nested":{"arrayofobjects":[{"datefield":"2023-03-04T02:38:57.520Z","numfield":30,"strfield":"foo54"},{"datefield":"2023-02-04T02:38:57.520Z","numfield":56,"strfield":"bar23"}],"nestNum":10,"nestString":"bar"},"num":1,"string":"foo"}}
4 rows returned