Postgres:“无法在对象上调用json_populate_recordset”错误

时间:2019-11-25 14:11:42

标签: arrays json postgresql recordset

我有一个表,其中的一列包含解压的json(“ actionDetails”),有时每行有多个json。由于某些奇怪的原因,查询

    SELECT "idVisit" AS visit_id,
    t.* FROM dl.live_last_visits_details_pvk,
    json_populate_recordset(null::json_type, "actionDetails" :: JSON) as t

给出我想要的确切结果-直到我跳到结果末尾,当它关闭表格并给我[22023] ERROR: cannot call json_populate_recordset on an object.

类似地,如果我尝试将此查询保存到表中,则会遇到相同的错误。

DROP TABLE IF EXISTS temp;
CREATE TEMP TABLE temp AS (
    SELECT "idVisit" AS visit_id,
    t.* FROM dl.live_last_visits_details_pvk,
    json_populate_recordset(null::json_type, "actionDetails" :: JSON) as t
);
SELECT * FROM temp;

有人知道是什么原因造成的(也许不是json的一些奇怪的行值?),我该如何解决呢?不知道如何搜索可能隐藏在该列值中的其他类型的对象,它是一个很大的表,所以我不能只进行筛选。我正在使用的数据有很多行并且经常更改,因此我需要编写可以处理这种奇怪情况的代码。有什么想法吗?

感谢您的时间!

1 个答案:

答案 0 :(得分:0)

我遇到了同样的错误。就我而言,当我的live_last_visits_details_pvk版本中有2行或更多行时,一切正常。当我只有1行时,PostgreSQL会生气并抛出此错误。我还没有适合您的聪明解决方案,但希望目前能对您有所帮助。