17.7 ORACLE_BIGDATA JSONドキュメント・ファイル・タイプへのアクセス
オブジェクト・ストレージまたはローカル・ディレクトリに格納されているドキュメントにネイティブJSONリーダー形式(jsondoc
)を使用する方法をを参照してください。
- JSONドキュメント・サポートの概要
ORACLE_BIGDATA
アクセス・ドライバは、jsondoc
ネイティブJSONリーダー形式をサポートしています。 - JSONドキュメントのアクセス・パラメータ
Oracleでは、jsondocファイル形式を定義するORACLE_BIGDATA
アクセス・パラメータがサポートされており、CREATE TABLE
文のACCESS PARAMETERS
句で使用されます。 - JSONDOCの使用例
次の例は、jsondoc
ファイル・タイプのORACLE_BIGDATAを使用してJSONドキュメントにアクセスする方法を示しています。
親トピック: ORACLE_BIGDATAアクセス・ドライバ
17.7.1 JSONドキュメント・サポートの概要
ORACLE_BIGDATA
アクセス・ドライバは、jsondoc
ネイティブJSONリーダー形式をサポートしています。
jsondoc
に対するORACLE_BIGDATA
アクセス・ドライバのサポートにより、オブジェクト・ストレージまたはローカル・ディレクトリに格納されているJSONドキュメントとシームレスに対話できます。JSONリーダーは、次のような様々な構造でJSONデータを解析および問合せするように設計されています。
- 行区切りのJSONドキュメント
- JSON配列(ネストされた配列のオプションのパス指定あり)
- 特殊なデータ型に対する拡張JSON (
EJSON
)注釈を使用したJSONドキュメント
この新機能により、複雑なJSON構造を柔軟に処理でき、tpではOracle Databaseの強力なJSON機能を問合せと分析に活用できます。
17.7.2 JSONドキュメントのアクセス・パラメータ
Oracleでは、jsondocファイル形式を定義するORACLE_BIGDATA
アクセス・パラメータがサポートされており、CREATE TABLE
文のACCESS PARAMETERS
句で使用されます。
表17-8 JSONドキュメントのアクセス・パラメータ
パラメータ | 説明 | 必須 |
---|---|---|
|
新しいJSON Reader機能をコールします 値: |
あり |
|
拡張JSONを有効にするかどうかを指定します 有効な値: デフォルト: |
オプション |
|
ORACLE_BIGDATAがドキュメントをロードできる場所を定義する有効なJSONパス式。 デフォルト: ドキュメント |
あり |
17.7.3 JSONDOCの使用例
次の例は、jsondoc
ファイル・タイプでORACLE_BIGDATAを使用してJSONドキュメントにアクセスする方法を示しています。
- 行区切りJSONドキュメントの問合せ
次に、複数の行区切りJSONドキュメントを含むJSONファイルと、このファイルを使用するSQL文の例を示します。 - JSON配列の問合せ
次に、JSONオブジェクトの単一の配列を含むJSONファイルと、このファイルを使用するSQL文の例を示します。 - オブジェクトでラップされたJSON配列
次に、外部JSONドキュメントにラップされたJSONドキュメントの例を示します。 - 拡張JSON (EJSON)のサポート
SQL型JSONは、TIMESTAMP
、DOUBLE
、FLOAT
、RAW
などの拡張JSON型を表すことができます。 - 複数行ファイルを含む単一JSONドキュメント
複数行ファイルを含む単一のJSONドキュメントを表にマップできます。この場合、ディレクトリ内の各JSONファイルが1つの行にマップされます。
17.7.3.1 行区切りJSONドキュメントの問合せ
次に、複数行区切りのJSONドキュメントを含むJSONファイルと、このファイルを使用するSQL文の例を示します。
例17-26 行区切りJSONドキュメントの問合せ
ファイル: fruit.json
{"name": "apple", "count": 20} {"name": "orange", "count": 42} {"name": "pear", "count": 10}
SQL文:
CREATE TABLE fruit (data JSON)
ORGANIZATION EXTERNAL
(TYPE ORACLE_BIGDATA ACCESS PARAMETERS
( com.oracle.bigdata.fileformat = jsondoc
com.oracle.bigdata.credential.name = 'OCI_CRED' )
LOCATION ('https://<objectstorage-location>/fruit.json'));
SELECT f.data."name", f.data."count" FROM fruit f;
name count
------------------------------
"apple" 20
"orange" 42
"pear" 10
親トピック: JSONDOCの使用例
17.7.3.2 JSON配列の問合せ
次に、JSONオブジェクトの単一の配列を含むJSONファイルと、このファイルを使用するSQL文の例を示します。
例17-27 JSON配列の問合せ
ファイル: fruit-array.json
[
{
"name" : "apple",
"count": 20
},
{
"name" : "orange",
"count": 42
},
{
"name" : "pear",
"count": 10
}
]
SQL文:
CREATE TABLE fruit (data JSON) ORGANIZATION EXTERNAL (
TYPE ORACLE_BIGDATA
DEFAULT DIRECTORY default_dir
ACCESS PARAMETERS (
com.oracle.bigdata.fileformat = jsondoc
com.oracle.bigdata.json.path = $.[*]
com.oracle.bigdata.credential.name = OCI_CRED
)
location ('https://<objectstorage-location>/fruit-array.json')
);
SQL> SELECT f.data."name", f.data."count"
FROM fruit f;
name count
------------------------------
"apple" 20
"orange" 42
"pear" 10
親トピック: JSONDOCの使用例
17.7.3.3 オブジェクトのラップされたJSON配列
次に、外部JSONドキュメントにラップされたJSONドキュメントの例を示します。
例17-28 オブジェクトのラップされたJSON配列
この例を使用するには、ロードするデータへのパス(com.oracle.bigdata.json.path
を使用)を指定します。パスは配列につながる必要があります。行は前の例のようにマップされます。
ファイル: fruit-array.json
{
"last_updated": 1434054678,
"ttl": 0,
"version": "1.0",
"fruit": [
{"name" : "apple", "count": 20 },
{"name" : "orange", "count": 42 },
{"name" : "pear", "count": 10 }
]
}
CREATE TABLE fruit (data JSON) ORGANIZATION EXTERNAL (
TYPE ORACLE_BIGDATA
DEFAULT DIRECTORY default_dir
ACCESS PARAMETERS
(
com.oracle.bigdata.fileformat = jsondoc
com.oracle.bigdata.json.path = $.fruit[*]
com.oracle.bigdata.credential.name = OCI_CRED
)
location ('https://objectstorage-location/fruit-wrapped.json')
);
SELECT f.data."name", f.data."count"
FROM fruit f;
name count
------------------------------
"apple" 20
"orange" 42
"pear" 10
親トピック: JSONDOCの使用例
17.7.3.4 拡張JSON (EJSON)のサポート
SQL型JSONは、TIMESTAMP
、DOUBLE
、FLOAT
、RAW
などの拡張JSON型を表すことができます。
例17-29 拡張JSON (EJSON)のサポート
.JSONテキストは、拡張JSON形式を使用して拡張JSON型を表すことができます。設定すると、これらのejson
注釈は対応する型に自動的に変換されます。
ファイル: fruit-extended.json
{"name" : "apple", "count": 20, "modified":{"$date":"2020-06-29T11:53:05.439Z"} }
{"name" : "orange", "count": 42 }
{"name" : "pear", "count": 10 }
SQL文:
CREATE TABLE fruit (data JSON) ORGANIZATION EXTERNAL (
TYPE ORACLE_BIGDATA
DEFAULT DIRECTORY default_dir
ACCESS PARAMETERS
(
com.oracle.bigdata.fileformat = jsondoc
com.oracle.bigdata.credential.name = oci_adwc4pm
)
location ('https://objectstorage-location/fruit-extended.json')
);
SELECT f.data."count", f.data."modified"
FROM fruit f
WHERE f.data."name" = "apple";
count modified
------------------------------
20 2020-06
親トピック: JSONDOCの使用例
17.7.3.5 複数行ファイルを含む単一JSONドキュメント
複数行ファイルを含む単一のJSONドキュメントを表にマップできます。この表では、ディレクトリ内の各JSONファイルが1行にマップされます。
例17-30 単一JSONドキュメント、複数行ファイル
複数行ファイルを含む単一のJSONドキュメントは、ディレクトリ内の各JSONファイル(ドキュメント)が表の1行にマップされるJSONファイルを含むディレクトリです。この場合、ディレクトリは/data
で、次のファイルがあります:
ファイル: data/apple.json
{
"name" : "apple",
"count": 42
}
ファイル: data/orange.json
{
"name" : "orange",
"count": 5
}
ファイル: data/pear.json
{
"name" : "pear",
"count": 12
}
SQL文:
CREATE TABLE fruit (data JSON) ORGANIZATION EXTERNAL (
TYPE ORACLE_BIGDATA
DEFAULT DIRECTORY default_dir
ACCESS PARAMETERS
(com.oracle.bigdata.fileformat = jsondoc)
location ('data/*.json')
);
SQL> SELECT f.data."name", f.data."count"
FROM fruit f;
name count
------------------------------
"apple" 20
"orange" 42
"pear" 10
親トピック: JSONDOCの使用例