D.1 移行前チェックの実行
PL/SQLプロシージャDBMS_JSON.json_type_convertible_check
を使用して、テキストJSONデータの特定の列をJSON
データ型に変換できるかどうかを確認します。
たとえば、これは、データベース・スキーマtable_owner
が所有する表j_purchaseorder
のテキストJSON列data
が変換可能かどうかをチェックします。変換可能性チェックのステータスは、表my_precheck_table
に書き込まれます。
EXECUTE DBMS_JSON.json_type_convertible_check(
owner => 'table_owner',
tableName => 'j_purchaseorder',
columnName => 'data',
statusTableName => 'my_precheck_table');
チェックの結果は、プロシージャの3番目のパラメータで指定された表(my_precheck_table
など)に格納されます。この表がまだ存在しない場合は作成されます。デフォルトでは、既存の表は切り捨てられますが、オプションの5番目のパラメータがTRUE
の場合、新しい結果の行は既存の表に追加されます。
デフォルトでは、JSON
型コンストラクタを(事実上)使用してデータを変換しようとすると、変換可能性がチェックされます。オプションの4番目のパラメータがTRUE
の場合、変換可能性はSQL条件is json
のみを使用してチェックされます。これは、JSONデータが実際にJSON
型に変換可能かどうかではなく、整形式であることをチェックするだけです。
このプロシージャは、チェックする列内の各JSON値をチェックします。変換できない各値を、変換できない理由とともにステータス表に記録します。
また、このプロシージャは、10,000行未満の表の場合は10%ずつ、10,000行から99,999行の表の場合は5%ずつ、100,000行以上の表の場合は1%ずつ、ステータス表に進行状況を記録します。進捗状況エントリには、これまでに見つかったエラーの数も表示されます。
表D-1に、結果のステータス表を示します。
表D-1 JSON型の変換可能性チェックのステータス表
列名 | データ型 | 説明 |
---|---|---|
|
|
このステータス行(ログ・エントリ)が書き込まれた日時。 |
|
|
表 |
|
|
テキストJSON列 |
|
|
|
|
|
変換可能性エラーが検出された行のアドレス。 |
|
|
|
|
|
|
例D-1 DBMS_JSON.JSON_TYPE_CONVERTIBLE_CHECKによってレポートされた問題のあるJSONデータの検索
この例では、表table_owner.j_purchaseorder
の列data
のROWID
AAAWf+AAEAAAAEMAAC
についての、ステータス表my_precheck_table
内でエラー・コードJSON SYNTAX ERROR
でレポートされている無効なデータの選択方法を示しています。
SELECT data FROM table_owner.j_purchaseorder
WHERE ROWID IN (SELECT pt.ERROR_ROW_ID
FROM my_precheck_table pt
WHERE pt.schema_name = table_owner
AND pt.table_name = j_purchaseorder
AND pt.column_name = data);
親トピック: テキストJSONデータからJSONデータ型への移行