在 postgresql 中制作嵌套表

Making nested table in postgresql

提问人:abdul sattar 提问时间:9/4/2023 最后编辑:James Zabdul sattar 更新时间:9/4/2023 访问量:225

问:

我有一个JSON数据集,它是数组格式。我必须在Postgres-SQL中创建一个表,然后将数据存储到其中。我从来没有处理过这种复杂的数据。我试图弄清楚哪一列属于哪些值。如何在PostgreSQL中制作嵌套表并将数据加载到其中?

我搜索了一下,来到 Postgres SQL 不支持某些网站的嵌套表。

enter image description here

JSON PostgreSQL 嵌套 架构

评论

0赞 James Z 9/4/2023
您的结构是否始终相同,或者您存储的是动态分层数据?
1赞 Frank Heikens 9/4/2023
您对嵌套表的定义是什么?数据归一化并不是什么新鲜事,也应该/可以在这里应用。从 3NF 模型开始,您很可能会坚持使用该模型,因为它有效
0赞 abdul sattar 9/4/2023
我熟悉规范化形式,但原因是,根据我的研究,我访问了很多网站来解决这个错误,大多数时候答案是相似的,postgresql不支持嵌套表,虽然这是我的第一个postgresql项目,但对此没有太多了解,所以这就是我被困在这里的原因
0赞 Frank Heikens 9/4/2023
PostgreSQL 支持规范化、数据化、数组和 json/jsonb。什么是不支持的?你要解决什么问题?不失礼貌,但您向我们展示的数据或数据结构中没有任何内容不能存储在关系数据库中。

答:

0赞 Kihara 9/4/2023 #1

虽然 PostgreSQL 不像其他一些数据库那样具有原生的“嵌套表”结构,但您可以使用 JSON 或 JSONB 数据类型有效地处理分层或嵌套数据。JSON 和 JSONB 之间的选择取决于是需要保留原始 JSON 结构(使用 JSON),还是要以更高效的二进制格式存储它(使用 JSONB)。使用 json 或 jsonb 的好处是:

  • 处理速度快得多,并且可以进行索引,这可能是一个很大的 优势。
  • 将实体属性值 (EAV) 表替换为 jsonb 列,其中 可以查询、索引和联接,从而提高速度。

注意:如果您的数据包含与图相关的关系,您可以使用 Apache AGE,它允许您通过提供图数据库扩展在 PostgreSQL 的关系模型中处理图相关关系。通过使用表对数据进行建模并利用 AGE 的图形查询功能,您可以在 PostgreSQL 中有效地管理和查询图形数据。请务必参考 Apache AGE 文档,了解有关其特定功能和查询语法的更多详细信息。

0赞 Abdul Aziz 9/4/2023 #2

你能做的最好的事情就是在 postgres 上使用 jsonb。类似的东西——

CREATE TABLE awayTeam (
    data jsonb
);

您需要做的是创建一个具有您在图像中提到的结构的文件,然后创建包含对象的表。然后,您应该使用以下命令将该文件加载到表中.jsonjsonb.json

COPY awayTeam(data) FROM '/path/to/data.json';

对于查询,您可以执行

SELECT data->>'name' FROM awayTeam;

或者,在嵌套的情况下

SELECT data->'address'->>'city' FROM awayTeam;

您可以使用 和 运算符轻松查询和操作嵌套的 JSON 结构。->->>