【发布时间】:2014-06-27 08:36:46
【问题描述】:
我有许多 json 数组存储在一个表 (jt) 中,如下所示:
[{"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。 我尝试使用 get_json_object 方法,但似乎该方法与 json 数组不兼容,因为我只获取空值。
这是我测试过的代码:
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;
【问题讨论】: