【发布时间】:2019-12-05 15:55:10
【问题描述】:
我有一个带有这样一个表的 Oracle 12c 数据库
(
MSISDN VARCHAR2(15 BYTE),
DOCUMENT VARCHAR2(15 BYTE),
LOAD_DATE DATE,
LIST_NAME VARCHAR2(40 BYTE),
ATRIB VARCHAR2(40 BYTE),
VALUE VARCHAR2(200 BYTE)
)
另一方面,我有这个 JSON,其中包含该表的数据
{
"DigitalClient":{
"documentNumber":"99999999-R",
"documentType":"PASSPORT",
"lastLineDate":123213213213,
"lastClientDate":123213213213,
"segment":"EMPRESA"
},
"ADSL":{
"idOrder":216668542,
"status":"COMPLETED",
"orderType":"STANDARD",
"documentNumber":"161893223R",
"technologyAccess":"FTTVULA",
"dUserLastModifiedDate":1571329345000,
"type":"PERSON"
}
}
想法是这样解析表格中的这些信息:
MSISDN DOCUMENT LOAD_DATE LIST_NAME ATRIB VALUE
------ --------- ----------- ------------ -------- -----
911231231 6745671A 05/12/19 DigitalClient documentNumber 99999999R
911231231 6745671A 05/12/19 DigitalClient documentType PASSPORT
911231231 6745671A 05/12/19 ADSL idOrder 216668542
...
前三个字段是在JSON文件之外获取的,JSON文件相关字段是后三个。可以看到,字段 LIST_NAME 填充的是一级名称,而 ATRIB 和 VALUE 字段填充的是二级名称和值
现在,最困难的部分。 JSON 结构每天都在变化。我不知道 JSON 文件包含什么,既不知道一级或二级字段名称,也不知道有多少结构。我唯一知道的是该文件只有两层深:第一层是属性列表的名称,第二层是每个列表的属性及其值。
有人知道实现这一目标的好方法吗?我尝试了showed here 的解决方案,但不是我想要的,因为我必须在第一列中使用 SUBSTR 提取 LIST_NAME 和 ATRIB 信息,并且对于加载大量记录不是很有效。
提前致谢!
【问题讨论】:
-
检查这里,这可能会有所帮助:blogs.oracle.com/apex/tips-for-parsing-json-in-apex
-
感谢您的建议,但首先我将尝试使用 Oracle 12c 的原生 JSON 包
标签: json oracle plsql oracle12c