我有一个json作为文本存储在我的一个数据库行中.json数据如下

[{"id":67272,"name":"EE_Quick_Changes_J_UTP.xlsx"},{"id":67273,"name":"16167.txt"},{"id":67274,"name":"EE_12_09_2013_Bcum_Searchall.png"}]

要解析这个,我想使用postgresql方法

json_填充_记录集()

当我发布这样的命令时

select json_populate_recordset(null::json,'[{"id":67272,"name":"EE_Quick_Changes_J_UTP.xlsx"},{"id":67273,"name":"16167.txt"},{"id":67274,"name":"EE_12_09_2013_Bcum_Searchall.png"}]') from anoop;

它给了我以下的错误

注意:在from子句中,"anoop"是表名.

有人能告诉我如何使用json_populate_recordset方法从这个json字符串中提取数据吗.

我从你那里得到了方法的参考

推荐答案

传递给pgsql函数json_populate_recordset的第一个参数应该是行类型.如果要使用json数组填充现有表anoop,只需将表anoop作为行类型传递,如下所示:

insert into anoop
select * from json_populate_recordset(null::anoop, 
        '[{"id":67272,"name":"EE_Quick_Changes_J_UTP.xlsx"},
          {"id":67273,"name":"16167.txt"},
          {"id":67274,"name":"EE_12_09_2013_Bcum_Searchall.png"}]');

在这里,null是要插入到表列中的默认值,表列未在json中设置.

如果没有现有的表,则需要使用create a row type来保存json数据(即列)

create TYPE anoop_type AS (id int, name varchar(100));
select * from json_populate_recordset(null :: anoop_type, 
        '[...]') --same as above

Postgresql相关问答推荐

Postgres SQL执行加入

如何在PSQL中查询jsonb列包含字符串的嵌套数组

PostgreSQL:重新创建主键值以匹配记录计数

PostgreSQL plpgsql函数问题

PostgreSQL存储过程中不存在游标

JPA将没有时区的Postgres时间戳调整为服务器时区

使用Helm设置PostgreSQL配置

有没有办法共享数据或监控复杂 PostgresQL 事务的进度?

为什么不能超过 10 个并发连接到 Postgres RDS 数据库

Regexp_replace 行为会改变,如果它用空白字符串或 null 替换字符串数组中的字符串

处理 sqlalchemy 断开连接的更好方法

PostgreSQL:根据排序顺序仅 Select 每个 id 的第一条记录

如何在 postgres json 列中查询嵌套数组?

如何在 postgresql 交叉表中用零替换空值

Windows 上的 GeoDjango:Could not find the GDAL library" / "OSError: [WinError 126] The specified module could not be found

如何更改 PostgreSQL 中的日期样式?

如何使用 sql 或 phpPgAdmin 更改 PostgreSQL 数据库的数据库编码?

如何在 postgres 查询中排名

在 pg_restore 期间排除表

错误:索引表达式中的函数必须在 Postgres 中标记为 IMMUTABLE