21.13 変換後のインポート(useFlexFields=false)
インポートを試行すると、エラー・ログ表が作成され、問合せが実行されて、インポート・エラーおよびインポートされたドキュメントが表示されます。
エラー・ログを作成し、「コンバータの使用(useFlexFields=false)」で作成した二面性ビューに(表student_tab
、teacher_tab
およびcourse_tab
の)入力ドキュメント・セットをインポートするプロセスは、簡易レシピ・ケースとまったく同じです。「二面性への移行、簡易レシピ」の例「エラー・ログの作成(外れ値なしのユースケース)」および「ドキュメント・セットのインポート(外れ値なしのユースケース)」を参照してください。しかし、デフォルト・ケースのエラー・ログを確認すると、別のことがわかります。
例21-33 インポートからのエラー・ログの確認(useFlexFields = falseの場合)
デフォルト・ケース(「デフォルトの変換後のインポート」の「インポートからのエラー・ログの確認(デフォルト・ケース)」を参照)と同様に、学生の二面性ビューへのインポートでは、値"Nineteen"
のフィールドage
について型出現の外れ値に関するエラーがログに記録され、教師のビューに関するエラーは記録されません。
ただし、デフォルト・ケースとは異なり、インポートでは欠落しているNotes
フィールドに関するエラーもログに記録されます。フィールドNotesはどの列にもマップされず、フレックス列がないため、このフィールドは二面性ビューではサポートされません。
ORA_ERR_NUMBER$
---------------
ORA_ERR_MESG$
-------------
ORA_ERR_TAG$
------------
42555
ORA-42555: Cannot insert into JSON Relational Duality View 'COURSE': The input JSON document is invalid.
JZN-00651: field 'Notes' is unknown or undefined
Import Error
コースの入力表から原因となるコースのドキュメントを選択します:
SELECT * FROM "JANUS".course_tab
WHERE ROWID IN (SELECT ora_err_rowid$ FROM course_err_log);
DATA
----
{"courseId":"MATH101","name":"Algebra","creditHours":3,"students":[{"studentId":
1,"name":"Donald P."},{"studentId":5,"name":"Hye E."}],"teacher":{"teacherId":10
1,"name":"Abdul J."},"Notes":"Prerequisite for Advanced Algebra"}
次に、DBMS_JSON_DUALITY.validate_import_report
を使用して、正常にインポートされたドキュメントの問題についてレポートします。デフォルト・ケースおよび簡易レシピ・ケースとは異なり、useFlexFields
= false
での変換では、インポートされた学生およびコースのドキュメントに関する検証の問題があります。(インポートされた教師のドキュメントに関する検証の問題はありません。)
例21-34 VALIDATE_IMPORT_REPORT (useFlexFields = falseの場合)
インポートされた教師のドキュメントに関する検証の問題はありません。
インポートされた学生のデータでは、age
が文字列値を持つ問題のあるドキュメントがレポートされます。
SELECT * FROM DBMS_JSON_DUALITY.validate_import_report(
table_name => 'STUDENT_TAB',
view_name => 'STUDENT');
DATA
----
{"studentId":9,"name":"Luis F.","age":"Nineteen","advisorId":101,"courses":[{"co
urseNumber":"CS101","name":"Algorithms","avgGrade":75},{"courseNumber":"MATH102"
,"name":"Calculus","avgGrade":95},{"courseNumber":"MATH103","name":"Advanced Alg
ebra","avgGrade":82}],"dormitory":{"dormId":201,"dormName":"ABC"}}
ERRORS
------
[{"op":"replace","path":"/age","value":null}]
PL/SQLファンクションvalidate_import_report
は、入力ドキュメントと二面性ビューにインポートされたドキュメントを比較しますが、コンバータによって追加された追加フィールド(_id
、_metadata
、ora$map
*、ora$
*_flex
)は無視します。JSONパッチの形式を使用して、問題のあるフィールドを識別し、入力データに対して実行できる編集操作を指定して問題(相違)を解決します。
-
フィールド
path
は場所を指定します。値の構文は、SQL/JSONパス式の構文ではなく、JSONポインタの構文です。この場合、path
値/age
は、ドキュメントの最上位レベルのage
フィールドをターゲットとします。 -
フィールド
op
は、編集操作を指定します。問題のある学生のドキュメントの場合、この操作は、最上位フィールドage
の値をJSONnull
に置き換えます。(それが、望ましい解決策であるかどうかはわかりません。)
問題のある学生のドキュメントは、student
二面性ビューにインポートできません。しかし、そのビューで依然として"サポート"されています。ビューに存在するのは、ビューcourse
およびteacher
にインポートすると、そのドキュメントの基礎となる表student_root
に行(student_id
= 9
)が追加されるためです。
ただし、そのドキュメント内のフィールドage
の値は値(JSON) null
になります。これは、列student_root.age
にマップされるフィールドが他の2つのドキュメント・セットにないので、その列の値がSQL NULL
になるためです。また、そのNULL
列値は、学生のドキュメント内のJSON null
にマップされます。
インポートされたコースのデータでは、フィールドNotes
を含む問題のあるドキュメントがレポートされます。
SELECT * FROM DBMS_JSON_DUALITY.validate_import_report(
table_name => 'COURSE_TAB',
view_name => 'COURSE');
DATA
----
{"courseId":"MATH101","name":"Algebra","creditHours":3,"students":[{"studentId": [{"op":"remove","path":"/Notes"},{"op":"remove","path":"/creditHours"}]
1,"name":"Donald P."},{"studentId":5,"name":"Hye E."}],"teacher":{"teacherId":10
1,"name":"Abdul J."},"Notes":"Prerequisite for Advanced Algebra"}
ERRORS
------
[{"op":"remove","path":"/Notes"},{"op":"remove","path":"/creditHours"}]
問題のあるコースのドキュメントは、course
二面性ビューにインポートできません。
そのドキュメントでは、最上位フィールドNotes
およびcreditHours
を削除する2つのエラー操作がレポートされています。(これが、望ましい解決策であるかどうかはわかりません。)
問題のあるコースのドキュメントのインポートは、フィールドNotes
が原因で失敗します。このフィールドは、出現の外れ値としてどの列にもマップされなかったためプルーニングされました。また、フレックス列がない(入力データがuseFlexFields
= false
で変換された)ため、インポータはマップされていないフィールドとしてフレックス列に格納できません。
ただし、course
ビューの基礎となる表course_root
は、その問題のあるドキュメントに対応する行(フィールドcourseId
の値がMATH101
)を取得します。学生および教師のデータをインポートするため、つまりstudent
およびteacher
のビューに移入するためです。これらのビューにインポートすると、表course_root
の列course_id
およびname
が移入され、これらの列は、学生および教師のドキュメントで使用されます。ただし、フィールドNotes
またはcreditHours
は移入されません。
次の例「学生の二面性ビューのドキュメント・コレクション(useFlexFields = false)」および「コースの二面性ビューのドキュメント・コレクション(useFlexFields = false)」に、二面性ビューでサポートされる学生およびコースのドキュメント・コレクション(これらのビューへのインポートの結果)をそれぞれ示します。
教師の二面性ビュー・コレクションは、useFlexFields
= true
での変換と同じです。「デフォルトの変換後のインポート」の例「教師の二面性ビューのドキュメント・コレクション(useFlexFields = true)」を参照してください。
例21-35 学生の二面性ビューのドキュメント・コレクション(useFlexFields = false)
これを、学生の入力ドキュメント・セット(「学校経営の例(マイグレータの入力ドキュメント)」の「学生のドキュメント・セット(マイグレータの入力)」)と比較します。このセット(minFieldFrequency
= 25
およびminTypeFrequency
= 15
を使用して変換)にある外れ値フィールドはage
(型出現の頻度10%) 1つのみです。
相違(フィールドの順序は関係ないので無視)は次の点のみです:
-
ドキュメント識別子フィールド
_id
およびドキュメント状態フィールド_metadata
が追加されました。(二面性ビューでサポートされているすべてのドキュメントに、これらのフィールドがあります。) -
フィールド
ora$mapCourseId
およびora$mapStudentId
が追加されました。これらは、基になるマッピング表mapping_table_course_root_to_student_root
の識別列(この場合は主キー列)に対応付けられています。これらの値はそれぞれ、フィールドcourseNumber
およびstudentId
の値と同じです。 -
学生Luis F.のドキュメント(
studentId
=9
)がstudent
二面性ビューへのインポートに失敗した(フィールドage
に文字列値"Nineteen"
があり、その10%の出現は型出現の外れ値であるため)にもかかわらず、そのドキュメントは二面性ビューに存在しています。ドキュメントをcourse
およびteacher
の二面性ビューにインポートすると、列student_root.student_id
の値として9
を持つ行が表student_root
に追加されます。これは、値9
を持つstudentId
が入力表course_tab
とteacher_tab
の両方に存在するためです。ただし、Luis F.の学生のドキュメントの
age
フィールド値は(JSON)null
です("Nineteen"
でも19
でもありません)。コースまたは教師の入力ドキュメント・セットのいずれにもage
フィールドが存在しないため、Luis F.の学生のデータをcourse
およびteacher
ビューにインポートすると、SQLNULL
が表student_root
のage
列に格納されます。また、そのNULL
列値は、学生のドキュメント内のJSONnull
にマップされます。
他に相違はありません。具体的には、混合型フィールドavgGrade
は外れ値ではない(各型はドキュメントの15%超で出現する)ため、入力データから変更されていません。
{
"_id" : 1,
"_metadata" :
{
"etag" : "4F39C8B86F4295AD2958B18A77B0AACC",
"asof" : "00000000004DB839"
},
"age" : 20,
"name" : "Donald P.",
"courses" :
[
{
"ora$mapCourseId" : "CS101",
"ora$mapStudentId" : 1,
"name" : "Algorithms",
"avgGrade" : 75,
"courseNumber" : "CS101"
},
{
"ora$mapCourseId" : "CS102",
"ora$mapStudentId" : 1,
"name" : "Data Structures",
"avgGrade" : "TBD",
"courseNumber" : "CS102"
},
{
"ora$mapCourseId" : "MATH101",
"ora$mapStudentId" : 1,
"name" : "Algebra",
"avgGrade" : 90,
"courseNumber" : "MATH101"
}
],
"advisorId" : 102,
"dormitory" :
{
"dormId" : 201,
"dormName" : "ABC"
},
"studentId" : 1
}
{
"_id" : 2,
"_metadata" :
{
"etag" : "758A4F3E6EF3152A4FA0892AB38635D4",
"asof" : "00000000004DB839"
},
"age" : 21,
"name" : "Elena H.",
"courses" :
[
{
"ora$mapCourseId" : "CS101",
"ora$mapStudentId" : 2,
"name" : "Algorithms",
"avgGrade" : 75,
"courseNumber" : "CS101"
},
{
"ora$mapCourseId" : "CS102",
"ora$mapStudentId" : 2,
"name" : "Data Structures",
"avgGrade" : "TBD",
"courseNumber" : "CS102"
},
{
"ora$mapCourseId" : "MATH102",
"ora$mapStudentId" : 2,
"name" : "Calculus",
"avgGrade" : 95,
"courseNumber" : "MATH102"
}
],
"advisorId" : 103,
"dormitory" :
{
"dormId" : 202,
"dormName" : "XYZ"
},
"studentId" : 2
}
{
"_id" : 3,
"_metadata" :
{
"etag" : "06905F120EF74124C5985354BBCE5CC1",
"asof" : "00000000004DB839"
},
"age" : 20,
"name" : "Francis K.",
"courses" :
[
{
"ora$mapCourseId" : "MATH103",
"ora$mapStudentId" : 3,
"name" : "Advanced Algebra",
"avgGrade" : 82,
"courseNumber" : "MATH103"
}
],
"advisorId" : 103,
"dormitory" :
{
"dormId" : 204,
"dormName" : "QWE"
},
"studentId" : 3
}
{
"_id" : 4,
"_metadata" :
{
"etag" : "50847D1AB63537118A6133A4CC1B8708",
"asof" : "00000000004DB839"
},
"age" : 19,
"name" : "Georgia D.",
"courses" :
[
{
"ora$mapCourseId" : "CS101",
"ora$mapStudentId" : 4,
"name" : "Algorithms",
"avgGrade" : 75,
"courseNumber" : "CS101"
},
{
"ora$mapCourseId" : "MATH102",
"ora$mapStudentId" : 4,
"name" : "Calculus",
"avgGrade" : 95,
"courseNumber" : "MATH102"
},
{
"ora$mapCourseId" : "MATH103",
"ora$mapStudentId" : 4,
"name" : "Advanced Algebra",
"avgGrade" : 82,
"courseNumber" : "MATH103"
}
],
"advisorId" : 101,
"dormitory" :
{
"dormId" : 203,
"dormName" : "LMN"
},
"studentId" : 4
}
{
"_id" : 5,
"_metadata" :
{
"etag" : "FD6E27A868C56D1EF9C7AEB3F08C7F9B",
"asof" : "00000000004DB839"
},
"age" : 21,
"name" : "Hye E.",
"courses" :
[
{
"ora$mapCourseId" : "CS102",
"ora$mapStudentId" : 5,
"name" : "Data Structures",
"avgGrade" : "TBD",
"courseNumber" : "CS102"
},
{
"ora$mapCourseId" : "MATH101",
"ora$mapStudentId" : 5,
"name" : "Algebra",
"avgGrade" : 90,
"courseNumber" : "MATH101"
}
],
"advisorId" : 103,
"dormitory" :
{
"dormId" : 201,
"dormName" : "ABC"
},
"studentId" : 5
}
{
"_id" : 6,
"_metadata" :
{
"etag" : "2BDA7862330B0687F22F830F3E314E34",
"asof" : "00000000004DB839"
},
"age" : 21,
"name" : "Ileana D.",
"courses" :
[
{
"ora$mapCourseId" : "MATH103",
"ora$mapStudentId" : 6,
"name" : "Advanced Algebra",
"avgGrade" : 82,
"courseNumber" : "MATH103"
}
],
"advisorId" : 102,
"dormitory" :
{
"dormId" : 205,
"dormName" : "GHI"
},
"studentId" : 6
}
{
"_id" : 7,
"_metadata" :
{
"etag" : "F1EF0CCD54EDFA78D2263D7E742D6CE8",
"asof" : "00000000004DB839"
},
"age" : 20,
"name" : "Jatin S.",
"courses" :
[
{
"ora$mapCourseId" : "CS101",
"ora$mapStudentId" : 7,
"name" : "Algorithms",
"avgGrade" : 75,
"courseNumber" : "CS101"
},
{
"ora$mapCourseId" : "CS102",
"ora$mapStudentId" : 7,
"name" : "Data Structures",
"avgGrade" : "TBD",
"courseNumber" : "CS102"
}
],
"advisorId" : 101,
"dormitory" :
{
"dormId" : 204,
"dormName" : "QWE"
},
"studentId" : 7
}
{
"_id" : 8,
"_metadata" :
{
"etag" : "9A25A267BC08858E0F754E0C00B32F9E",
"asof" : "00000000004DB839"
},
"age" : 21,
"name" : "Katie H.",
"courses" :
[
{
"ora$mapCourseId" : "CS102",
"ora$mapStudentId" : 8,
"name" : "Data Structures",
"avgGrade" : "TBD",
"courseNumber" : "CS102"
},
{
"ora$mapCourseId" : "MATH103",
"ora$mapStudentId" : 8,
"name" : "Advanced Algebra",
"avgGrade" : 82,
"courseNumber" : "MATH103"
}
],
"advisorId" : 102,
"dormitory" :
{
"dormId" : 205,
"dormName" : "GHI"
},
"studentId" : 8
}
{
"_id" : 10,
"_metadata" :
{
"etag" : "94376DA05B92E47718AF70A31FBE56E7",
"asof" : "00000000004DB839"
},
"age" : 20,
"name" : "Ming L.",
"courses" :
[
{
"ora$mapCourseId" : "MATH102",
"ora$mapStudentId" : 10,
"name" : "Calculus",
"avgGrade" : 95,
"courseNumber" : "MATH102"
}
],
"advisorId" : 101,
"dormitory" :
{
"dormId" : 202,
"dormName" : "XYZ"
},
"studentId" : 10
}
{
"_id" : 9,
"_metadata" :
{
"etag" : "579824C71904C46901BBA605E8539943",
"asof" : "00000000004DB839"
},
"age" : null,
"name" : "Luis F.",
"courses" :
[
{
"ora$mapCourseId" : "CS101",
"ora$mapStudentId" : 9,
"name" : "Algorithms",
"avgGrade" : 75,
"courseNumber" : "CS101"
},
{
"ora$mapCourseId" : "MATH102",
"ora$mapStudentId" : 9,
"name" : "Calculus",
"avgGrade" : 95,
"courseNumber" : "MATH102"
},
{
"ora$mapCourseId" : "MATH103",
"ora$mapStudentId" : 9,
"name" : "Advanced Algebra",
"avgGrade" : 82,
"courseNumber" : "MATH103"
}
],
"advisorId" : 101,
"dormitory" :
{
"dormId" : 201,
"dormName" : "ABC"
},
"studentId" : 9
}
例21-36 コースの二面性ビューのドキュメント・コレクション(useFlexFields = false)
これを、コースの入力ドキュメント・セット(「学校経営の例(マイグレータの入力ドキュメント)」の例「コースのドキュメント・セット(マイグレータの入力)」)と比較します。このセット(minFieldFrequency
= 25
およびminTypeFrequency
= 15
を使用して変換)にある外れ値フィールドはNotes
(出現の頻度20%) 1つのみです。
相違(フィールドの順序は関係ないので無視)は次の点のみです:
-
ドキュメント識別子フィールド
_id
およびドキュメント状態フィールド_metadata
が追加されました。(二面性ビューでサポートされているすべてのドキュメントに、これらのフィールドがあります。) -
フィールド
ora$mapCourseId
およびora$mapStudentId
が追加されました。これらは、基になるマッピング表mapping_table_course_root_to_student_root
の識別列(この場合は主キー列)に対応付けられています。これらの値はそれぞれ、フィールドcourseNumber
およびstudentId
の値と同じです。 -
ドキュメント(
courseId
="MATH101"
)がcourse
二面性ビューへのインポートに失敗した(フィールドNotes
がドキュメントの20%でしか出現せず、出現の外れ値であるため)にもかかわらず、そのドキュメントは二面性ビューに存在しています。ただし、フィールドNotes
(コンバータによってどの列にもマップされず、useFlexFields
がfalse
であったため、値を格納するフレックス列がない)およびフィールドcreditHours
がありません。ドキュメントを
student
およびteacher
二面性ビューにインポートすると、列course_root.course_id
の値として"MATH101"
を持つ行が表course_root
に追加されるため、問題のあるドキュメントがビューでサポートされます。これは、値が"MATH101"
の列course_id
が入力表student_tab
とteacher_tab
の両方に存在するためです。フィールド
Notes
があるコースのドキュメントはインポートできなかったため、その入力ドキュメントのフィールドcreditHours
もビューでサポートされるドキュメントにありません。student
またはteacher
ビューにどのドキュメントをインポートしても、フィールドcreditHours
はそのドキュメントに提供されません。列credit_hours
を含むのは、表course_tab
のみです。
{
"_id" : "CS101",
"_metadata" :
{
"etag" : "7600B24570B58297702B95B8DE4F1B00",
"asof" : "00000000004DB847"
},
"name" : "Algorithms",
"teacher" :
{
"name" : "Betty Z.",
"teacherId" : 102
},
"students" :
[
{
"ora$mapCourseId" : "CS101",
"ora$mapStudentId" : 1,
"name" : "Donald P.",
"studentId" : 1
},
{
"ora$mapCourseId" : "CS101",
"ora$mapStudentId" : 2,
"name" : "Elena H.",
"studentId" : 2
},
{
"ora$mapCourseId" : "CS101",
"ora$mapStudentId" : 4,
"name" : "Georgia D.",
"studentId" : 4
},
{
"ora$mapCourseId" : "CS101",
"ora$mapStudentId" : 7,
"name" : "Jatin S.",
"studentId" : 7
},
{
"ora$mapCourseId" : "CS101",
"ora$mapStudentId" : 9,
"name" : "Luis F.",
"studentId" : 9
}
],
"creditHours" : 5,
"courseId" : "CS101"
}
{
"_id" : "CS102",
"_metadata" :
{
"etag" : "C3813410219036CF0E210FFCE3917FEB",
"asof" : "00000000004DB847"
},
"name" : "Data Structures",
"teacher" :
{
"name" : "Betty Z.",
"teacherId" : 102
},
"students" :
[
{
"ora$mapCourseId" : "CS102",
"ora$mapStudentId" : 1,
"name" : "Donald P.",
"studentId" : 1
},
{
"ora$mapCourseId" : "CS102",
"ora$mapStudentId" : 2,
"name" : "Elena H.",
"studentId" : 2
},
{
"ora$mapCourseId" : "CS102",
"ora$mapStudentId" : 5,
"name" : "Hye E.",
"studentId" : 5
},
{
"ora$mapCourseId" : "CS102",
"ora$mapStudentId" : 7,
"name" : "Jatin S.",
"studentId" : 7
},
{
"ora$mapCourseId" : "CS102",
"ora$mapStudentId" : 8,
"name" : "Katie H.",
"studentId" : 8
}
],
"creditHours" : 3,
"courseId" : "CS102"
}
{
"_id" : "MATH101",
"_metadata" :
{
"etag" : "5E24FBF3B13A297A89FE1D4C68C705BE",
"asof" : "00000000004DB847"
},
"name" : "Algebra",
"teacher" :
{
"name" : "Abdul J.",
"teacherId" : 101
},
"students" :
[
{
"ora$mapCourseId" : "MATH101",
"ora$mapStudentId" : 1,
"name" : "Donald P.",
"studentId" : 1
},
{
"ora$mapCourseId" : "MATH101",
"ora$mapStudentId" : 5,
"name" : "Hye E.",
"studentId" : 5
}
],
"courseId" : "MATH101"
}
{
"_id" : "MATH102",
"_metadata" :
{
"etag" : "4B55E2EF38E6DDAF6777251168DD07A5",
"asof" : "00000000004DB847"
},
"name" : "Calculus",
"teacher" :
{
"name" : "Abdul J.",
"teacherId" : 101
},
"students" :
[
{
"ora$mapCourseId" : "MATH102",
"ora$mapStudentId" : 2,
"name" : "Elena H.",
"studentId" : 2
},
{
"ora$mapCourseId" : "MATH102",
"ora$mapStudentId" : 4,
"name" : "Georgia D.",
"studentId" : 4
},
{
"ora$mapCourseId" : "MATH102",
"ora$mapStudentId" : 9,
"name" : "Luis F.",
"studentId" : 9
},
{
"ora$mapCourseId" : "MATH102",
"ora$mapStudentId" : 10,
"name" : "Ming L.",
"studentId" : 10
}
],
"creditHours" : 4,
"courseId" : "MATH102"
}
{
"_id" : "MATH103",
"_metadata" :
{
"etag" : "C59E6274FE813279ECC28C73CA4AB121",
"asof" : "00000000004DB847"
},
"name" : "Advanced Algebra",
"teacher" :
{
"name" : "Colin J.",
"teacherId" : 103
},
"students" :
[
{
"ora$mapCourseId" : "MATH103",
"ora$mapStudentId" : 3,
"name" : "Francis K.",
"studentId" : 3
},
{
"ora$mapCourseId" : "MATH103",
"ora$mapStudentId" : 4,
"name" : "Georgia D.",
"studentId" : 4
},
{
"ora$mapCourseId" : "MATH103",
"ora$mapStudentId" : 6,
"name" : "Ileana D.",
"studentId" : 6
},
{
"ora$mapCourseId" : "MATH103",
"ora$mapStudentId" : 8,
"name" : "Katie H.",
"studentId" : 8
},
{
"ora$mapCourseId" : "MATH103",
"ora$mapStudentId" : 9,
"name" : "Luis F.",
"studentId" : 9
}
],
"creditHours" : "3",
"courseId" : "MATH103"
}
二面性ビューのデータ・ガイドJSONスキーマの作成は、useFlexFields
= true
の場合と同じです。「デフォルトの変換後のインポート」の例「二面性ビューでサポートされるドキュメント・コレクションのJSONデータ・ガイドの作成」を参照してください。また、student
およびteacher
ビューの結果のデータ・ガイドも、その場合と同じです。「デフォルトの変換後のインポート」の「学生の二面性ビュー・データ・ガイド」および「教師の二面性ビュー・データ・ガイド」を参照してください。
ただし、course
ビュー用に作成されたデータ・ガイドは同じではありません:
例21-37 コースの二面性ビュー・データ・ガイド(useFlexFields = falseの場合)
このデータ・ガイドJSONスキーマは、useFlexFields
がfalse
である変換の場合について、二面性ビューcourse
でサポートされているコースのドキュメント・コレクションをまとめたものです。これは、useFlexFields
がtrue
である変換の場合のデータ・ガイドと同じですが、Notes
フィールドがない点が異なります。
{
"type" : "object",
"o:frequency" : 100,
"o:last_analyzed" : "2025-01-15T21:19:03",
"o:sample_size" : 5,
"required" : true,
"properties" :
{
"_id" :
{
"type" : "string",
"o:length" : 8,
"o:preferred_column_name" : "_id",
"o:frequency" : 100,
"o:low_value" : "CS101",
"o:high_value" : "MATH103",
"o:num_nulls" : 0,
"o:last_analyzed" : "2025-01-15T21:19:03",
"o:sample_size" : 5,
"required" : true,
"maxLength" : 7,
"minLength" : 5
},
"name" :
{
"type" : "string",
"o:length" : 16,
"o:preferred_column_name" : "name",
"o:frequency" : 100,
"o:low_value" : "Advanced Algebra",
"o:high_value" : "Data Structures",
"o:num_nulls" : 0,
"o:last_analyzed" : "2025-01-15T21:19:03",
"o:sample_size" : 5,
"required" : true,
"maxLength" : 16,
"minLength" : 7
},
"teacher" :
{
"type" : "object",
"o:preferred_column_name" : "teacher",
"o:frequency" : 100,
"o:last_analyzed" : "2025-01-15T21:19:03",
"o:sample_size" : 5,
"required" : true,
"properties" :
{
"name" :
{
"type" : "string",
"o:length" : 8,
"o:preferred_column_name" : "name",
"o:frequency" : 100,
"o:low_value" : "Abdul J.",
"o:high_value" : "Colin J.",
"o:num_nulls" : 0,
"o:last_analyzed" : "2025-01-15T21:19:03",
"o:sample_size" : 5,
"required" : true,
"maxLength" : 8,
"minLength" : 8
},
"teacherId" :
{
"type" : "number",
"o:preferred_column_name" : "teacherId",
"o:frequency" : 100,
"o:low_value" : 101,
"o:high_value" : 103,
"o:num_nulls" : 0,
"o:last_analyzed" : "2025-01-15T21:19:03",
"o:sample_size" : 5,
"required" : true,
"maximum" : 103,
"minimum" : 101
}
}
},
"courseId" :
{
"type" : "string",
"o:length" : 8,
"o:preferred_column_name" : "courseId",
"o:frequency" : 100,
"o:low_value" : "CS101",
"o:high_value" : "MATH103",
"o:num_nulls" : 0,
"o:last_analyzed" : "2025-01-15T21:19:03",
"o:sample_size" : 5,
"required" : true,
"maxLength" : 7,
"minLength" : 5
},
"students" :
{
"type" : "array",
"o:preferred_column_name" : "students",
"o:frequency" : 100,
"o:last_analyzed" : "2025-01-15T21:19:03",
"o:sample_size" : 5,
"required" : true,
"items" :
{
"properties" :
{
"name" :
{
"type" : "string",
"o:length" : 16,
"o:preferred_column_name" : "name",
"o:frequency" : 100,
"o:low_value" : "Donald P.",
"o:high_value" : "Ming L.",
"o:num_nulls" : 0,
"o:last_analyzed" : "2025-01-15T21:19:03",
"o:sample_size" : 5,
"required" : true,
"maxLength" : 10,
"minLength" : 6
},
"studentId" :
{
"type" : "number",
"o:preferred_column_name" : "studentId",
"o:frequency" : 100,
"o:low_value" : 1,
"o:high_value" : 10,
"o:num_nulls" : 0,
"o:last_analyzed" : "2025-01-15T21:19:03",
"o:sample_size" : 5,
"required" : true,
"maximum" : 10,
"minimum" : 1
},
"ora$mapCourseId" :
{
"type" : "string",
"o:length" : 8,
"o:preferred_column_name" : "ora$mapCourseId",
"o:frequency" : 100,
"o:low_value" : "CS101",
"o:high_value" : "MATH103",
"o:num_nulls" : 0,
"o:last_analyzed" : "2025-01-15T21:19:03",
"o:sample_size" : 5,
"required" : true,
"maxLength" : 7,
"minLength" : 5
},
"ora$mapStudentId" :
{
"type" : "number",
"o:preferred_column_name" : "ora$mapStudentId",
"o:frequency" : 100,
"o:low_value" : 1,
"o:high_value" : 10,
"o:num_nulls" : 0,
"o:last_analyzed" : "2025-01-15T21:19:03",
"o:sample_size" : 5,
"required" : true,
"maximum" : 10,
"minimum" : 1
}
}
}
},
"_metadata" :
{
"type" : "object",
"o:preferred_column_name" : "_metadata",
"o:frequency" : 100,
"o:last_analyzed" : "2025-01-15T21:19:03",
"o:sample_size" : 5,
"required" : true,
"properties" :
{
"asof" :
{
"type" : "binary",
"o:length" : 8,
"o:preferred_column_name" : "asof",
"o:frequency" : 100,
"o:low_value" : "",
"o:high_value" : "",
"o:num_nulls" : 0,
"o:last_analyzed" : "2025-01-15T21:19:03",
"o:sample_size" : 5,
"required" : true
},
"etag" :
{
"type" : "binary",
"o:length" : 16,
"o:preferred_column_name" : "etag",
"o:frequency" : 100,
"o:low_value" : "",
"o:high_value" : "",
"o:num_nulls" : 0,
"o:last_analyzed" : "2025-01-15T21:19:03",
"o:sample_size" : 5,
"required" : true
}
}
},
"creditHours" :
{
"oneOf" :
[
{
"type" : "number",
"o:preferred_column_name" : "creditHours",
"o:frequency" : 60,
"o:low_value" : 3,
"o:high_value" : 5,
"o:num_nulls" : 0,
"o:last_analyzed" : "2025-01-15T21:19:03",
"o:sample_size" : 5,
"maximum" : 5,
"minimum" : 3
},
{
"type" : "string",
"o:length" : 1,
"o:preferred_column_name" : "creditHours",
"o:frequency" : 20,
"o:low_value" : "3",
"o:high_value" : "3",
"o:num_nulls" : 0,
"o:last_analyzed" : "2025-01-15T21:19:03",
"o:sample_size" : 5,
"maxLength" : 1,
"minLength" : 1
}
]
}
}
}
これは欠落しているNotes
エントリ(useFlexFields
= true
の場合)です:
"Notes" : {"type" : "string",
"o:length" : 64,
"o:preferred_column_name" : "Notes",
"o:frequency" : 20,
"o:low_value" : "Prerequisite for Advanced Algebra",
"o:high_value" : "Prerequisite for Advanced Algebra",
"o:num_nulls" : 0,
"o:last_analyzed" : "2025-01-15T21:11:48",
"o:sample_size" : 5,
"maxLength" : 33,
"minLength" : 33}
関連項目:
-
ファンクション
validate_import_report
の詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』の「DBMS_JSON_DUALITY」を参照してください -
DBMS_JSON_DUALITY.validate_import_report
によってレポートされるエラー・コンテンツの詳細は、JSON PatchおよびJSON Pointerを参照してください
親トピック: JSONから二面性への移行