从Postgres jsonb中提取字段



我正试图找到一种从Postgres jsonb列中提取特定字段的有效方法。

CREATE TABLE foo (
id integer,
data jsonb
)

"数据";包含一行:

{
"firstname": "bob",
"lastname": "smith,
"tags": ["tag0","tag1"]
}

我想从数据列中提取大量字段。这个select语句是有效的,但它有大量的字段,产生非常长的SQL语句,而且我不知道它是否为每一列重复遍历jsonb:

SELECT data->>'firstname', data->'tags' FROM foo

我试过这个:

SELECT jsonb_path_query(data, '$.[firstname,tags]') FROM foo

但它给出了一条错误消息:syntax error, unexpected '['事实上,这个语法是正确的jsonpath perhttps://jsonpath.com/,但似乎Postgres没有实现它。

在SQL查询命令的执行速度和紧凑性方面,有没有一种方法可以有效地提取jsonb字段?

是的,您的查询将为foo的所有行读取完整的data列。

即使您规范化数据模型并将JSON属性转换为常规列,它也会逐行读取表,但如果您只访问表中的前几列,则查询会变得更便宜。

您正在寻找的是列存储,但PostgreSQL没有内置。

相关内容

  • 没有找到相关文章

最新更新