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から二面性への移行