Vantageでは、JSONドキュメントをシュレッドしてデータを抽出しリレーショナル形式で保存できます。抽出されたデータを使用して、既存のデータベース テーブルにデータを挿入したり更新したりできます。
JSONデータをシュレッディングする単純なケースでは、INSERT...JSON文を使用できます。この文は、テキスト形式で格納されているJSONドキュメントのシュレッディングのみをサポートしています。
さらに複雑なJSONデータのシュレッディングを処理できるよう、Vantageには以下が用意されています。
- JSON_TABLE
- このテーブル演算子では、JSONドキュメント内の一部またはすべてのデータがシュレッドされ、そのデータに基づいて派生データベース テーブルが作成されます。TD_JSONSHREDは、大きなJSONドキュメントの高速なシュレッドに推奨されます(属性の数が多いドキュメントや多くのデータベース レコードにシュレッドするドキュメント)。
- TD_JSONSHRED
- このテーブル演算子は、JSON_TABLEに類似しています。JSONドキュメント内の一部またはすべてのデータがシュレッドされ、そのデータに基づいて派生データベース テーブルが作成されます。大きなJSONドキュメントにも対応し、データをはるかに高速にシュレッドしますが、JSONPath式の使用には対応せず、対応する出力データ型は少なくなります。
- JSON_SHRED_BATCHとJSON_SHRED_BATCH_U
- これらのストアド プロシージャでは、JSON_TABLEを連続で呼び出すことで、複数のJSONドキュメントがシュレッドされ、複合的な派生データベース テーブルが作成されます。このデータベース テーブルを使用して、1つ以上の既存のデータベース テーブルを読み込んだり更新したりできます。
これらのテーブル演算子およびストアド プロシージャは、テキスト形式またはバイナリ形式で格納されているJSONドキュメントで機能します。
JSON_TABLEとTD_JSONSHREDの違い
機能 | JSON_TABLE | TD_JSONSHRED |
---|---|---|
速度 | 遅い | 速い |
入出力データでのCLOBデータ型への対応 | いいえ 入力は16MB (JSONデータ型の最大サイズ)まで。出力の制限は、データ型によって決まります。 |
はい 他のデータ型に加えてCLOB型(最大サイズ2GB)で入出力に対応 |
大文字と小文字を区別する文字列の一致 | 常に | オプション |
JSONPathの対応 | はい | いいえ |
戻り値データ型 | 詳細 | 少ない VARCHARまたはCLOBとして出力し、他の型にキャスト可能 |
パススルー列(入力テーブルにJSONデータを含まない列) | 返されたテーブルで、シュレッドされたJSONデータの後に表示される | 返されたテーブルで、シュレッドされたJSONデータの前に表示される |
サイズ過大のシュレッドされた文字列データの処理 | COLEXPRパラメータのデータ「型」仕様よりも長いシュレッド済みJSONデータを切り捨て | RETURNTYPEデータ サイズ仕様よりも長いシュレッド済みJSONデータを切り捨て。必要に応じて、シュレッドされたデータが型仕様を超えた場合に、エラーとともにTD_JSONSHREDを失敗させることができます。エラーには問題のある列が示されます。 |