我有许多存储在一个名为jt的表格中的JSON数组,它看起来像这样:
[{"ts":1403781896,"id":14,"log":"show"},{"ts":1403781896,"id":14,"log":"start"}]
[{"ts":1403781911,"id":14,"log":"press"},{"ts":1403781911,"id":14,"log":"press"}]
每个数组都是一条记录。
我想解析这个表格,以便获取一个具有3个字段(ts、id、log)的新表(logs)。我尝试使用get_json_object方法,但该方法似乎与json数组不兼容,因为我只得到null值。
这是我测试过的代码:
CREATE TABLE logs AS
SELECT get_json_object(jt.value, '$.ts') AS ts,
get_json_object(jt.value, '$.id') AS id,
get_json_object(jt.value, '$.log') AS log
FROM jt;
我尝试使用其他函数,但它们似乎非常复杂。 谢谢!:)
更新! 我通过执行正则表达式解决了我的问题:
CREATE TABLE jt_reg AS
select regexp_replace(regexp_replace(value,'\\}\\,\\{','\\}\\\n\\{'),'\\[|\\]','') as valuereg from jt;
CREATE TABLE logs AS
SELECT get_json_object(jt_reg.valuereg, '$.ts') AS ts,
get_json_object(jt_reg.valuereg, '$.id') AS id,
get_json_object(jt_reg.valuereg, '$.log') AS log
FROM ams_json_reg;