在列步骤中,我有如下json值 [{"id":"ali","status":"open","reminder":"tomorrow","show_due_date":"true"}]
我想查询新表,就像每个键的单独列一样
id |状态|提醒|显示到期日|
我写了这个脚本,但是得到的错误是不能调用jsonb\u到非数组上的\u记录集
WITH series (jsonbrecords) AS (Select steps::jsonb from files)
INSERT INTO new
(column1,
column2,
column3,
column4)
SELECT t."id", t."status", t."reminder", t."show_due_date"
FROM series
CROSS JOIN LATERAL
jsonb_array_elements(jsonbrecords) AS x(doc),
jsonb_to_recordset(x.doc) as t("id" text, "status" text,"reminder" text,"show_due_date" text)
2条答案
按热度按时间aamkag611#
您将两次取消json数组的测试,一次是使用
jsonb_array_elements
还有一次是jsonb_to_recordset
. 你只需要其中一个。xzv2uavs2#
您可以使用下面的查询将各个列显示出来,而无需使用其他函数:
演示
如果需要,可以继续执行此查询以插入到新表中: