15 外部JSONデータのロード
JSONデータのデータベース表は、テキストJSON文書を含むファイルシステム・ファイルから作成できます。
このトピックでは、GitHub (https://github.com/oracle/db-sample-schemas/tree/master/order_entry
)から取得できる外部ファイルシステム・ファイルPurchaseOrders.json
から、JSON文書を含む表を移入する方法について説明します。
このファイルには、1行に1つずつJSONオブジェクトが含まれています。この形式には、Oracle NoSQL Databaseなどの一般的なNoSQLデータベースによって作成されるエクスポート形式との互換性があります。
このような外部表は直接問い合せることができます。パフォーマンスを向上させるために、異なる行を対象とする複数の問合せがある場合には、外部表のデータから通常のデータベース表またはJSONコレクション表を移入できます。
例15-1では、GitHubからファイルPurchaseOrders.json
をダウンロードしたファイルシステム・フォルダにアクセスできるデータベース・ディレクトリを作成します。
次に、例15-2では、このデータベース・ディレクトリを使用して外部表であるjson_file_contents
を作成し、PurchaseOrders.json
のデータを入力しています。これは、すべてのJSON文書を列json_document
にコピーして、外部表にデータを一括で入力します。
例15-4では、JSON文書を外部表から、通常のデータベース表j_purchaseorder
のJSON列data
にコピーします。
例15-5も同様ですが、かわりにJSONコレクション表purchaseorders
に移入します。
外部表のJSON列json_document
にJSON
型記憶域を選択してあるため、通常の表の列data
もJSONデータ型にする必要があります。例15-3では、JSON
列data
を含む表j_purchaseorder
を作成します。
関連項目:
-
外部表の概要は、Oracle Database概要を参照してください。
-
外部表の詳細は、Oracle DatabaseユーティリティおよびOracle Database管理者ガイドを参照してください。
-
『Oracle Database SQL言語リファレンス』の「CREATE TABLE」
例15-1 発注書向けのデータベース・ディレクトリ・オブジェクトの作成
次のfolder-containing-json-file
を、GitHub (https://github.com/oracle/db-sample-schemas/tree/master/order_entry
)からダウンロードしたファイルを配置したフォルダに置き換える必要があります。(データベースがそのフォルダにアクセスできる必要があります。)
CREATE OR REPLACE DIRECTORY order_entry_dir
AS 'folder-containing-json-file';
ノート:
データベース・ディレクトリを作成するためには、システム権限CREATE ANY DIRECTORY
が必要です。
例15-2 外部表の作成およびテキストJSONデータのファイルシステム・ファイルからの入力
CREATE TABLE json_file_contents (data JSON)
ORGANIZATION EXTERNAL
(TYPE ORACLE_BIGDATA
ACCESS PARAMETERS (com.oracle.bigdata.fileformat = jsondoc)
LOCATION (order_entry_dir:'PurchaseOrders.json'))
PARALLEL
REJECT LIMIT UNLIMITED;
例15-3 JSONデータ用のJSON列を含む表の作成
表j_purchaseorder
には、主キーid
と、JSON列data
(JSON
データ型を使用して格納されている)があります。
DROP TABLE j_purchaseorder;
CREATE TABLE j_purchaseorder
(id VARCHAR2 (32) NOT NULL PRIMARY KEY,
date_loaded TIMESTAMP (6) WITH TIME ZONE,
data JSON);
例15-4 外部表からデータベース表へのJSONデータのコピー
INSERT INTO j_purchaseorder (id, date_loaded, data)
SELECT SYS_GUID(), SYSTIMESTAMP, data
FROM json_file_contents;
例15-5 外部表からJSONコレクション表へのJSONデータのコピー
この例では、JSONコレクション表purchaseorders
を作成し、外部表json_file_contents
のデータを移入します。
CREATE JSON COLLECTION TABLE purchaseorders;
INSERT INTO purchaseorders SELECT * FROM json_file_contents;
親トピック: JSONデータの挿入、更新およびロード