我有一个用json文档填充的sql列,一行用于行:
[{
"ID":"TOT",
"type":"ABS",
"value":"32.0"
},
{
"ID":"T1",
"type":"ABS",
"value":"9.0"
},
{
"ID":"T2",
"type":"ABS",
"value":"8.0"
},
{
"ID":"T3",
"type":"ABS",
"value":"15.0"
}]
如何将其转换为表格形式?我尝试使用红移json_extract_path_text
和JSON_EXTRACT_ARRAY_ELEMENT_TEXT
功能,我尝试使用json_each
和json_each_text
(在postgres上),但没有得到预期...任何建议?
期望的结果应该如下所示:
T1 T2 T3 TOT
9.0 8.0 15.0 32.0
答案 0 :(得分:0)
我假设您打印了4行。在postgresql
SELECT this_column->'ID'
FROM that_table;
将返回带有JSON字符串的列。如果需要文本列,请使用->>
。更多信息:https://www.postgresql.org/docs/current/static/functions-json.html
如果你使用的是一些旧的Postgresql(在9.3之前),这会变得更难:)
答案 1 :(得分:0)
您最好的选择是使用COPY from JSON Format。这将直接将JSON加载到普通表格式中。然后,您将其作为普通数据进行查询。
但是,我怀疑您需要通过删除外部[...]
方括号以及记录之间的逗号来稍微修改文件的格式,例如:
{
"ID": "TOT",
"type": "ABS",
"value": "32.0"
}
{
"ID": "T1",
"type": "ABS",
"value": "9.0"
}
但是,如果您的数据已加载且无法重新加载数据,则可以将数据提取到新表中,或者将其他列添加到现有表中并使用UPDATE
命令将每个字段提取到一个新列中。
或者,最糟糕的情况是,您可以使用JSON Functions中的一个来访问JSON字段中的信息,但这对于大型请求(例如在WHERE子句中)来说效率非常低。