首页 > 解决方案 > 将 json 对象存储到 postgresql 中的数据类型是什么?

问题描述

我对postgresql很陌生。

我想将下面的 json 对象存储到 postgresql 数据库中。

{
  "host": "xxx.xxx.xx.xx"
  "type": "OS"
}

你能告诉我我应该在postgresql中使用什么数据类型吗?提前致谢。

标签: node.jspostgresqlpostgresql-9.5

解决方案


如果您的数据始终包含相同的简单结构,我认为没有任何理由将它们存储为 JSON。您应该考虑将其简单地存储在具有列hosttype.

INSERT INTO table(my_host_column, my_type_column) VALUES
(my_json ->> 'host', my_json ->> 'type');

这使许多事情变得更加简单(搜索、更新……)。在您的情况下,Postgres 提供inetIP 地址列的类型。这样的专栏可以为你做合理性检查host,例如(https://www.postgresql.org/docs/current/static/datatype-net-types.html

您可以随时使用json_build_object('host', my_host_column, 'type', my_type_column)( https://www.postgresql.org/docs/current/static/functions-json.html )重新创建 JSON


但是,如果您仍想按原样存储 JSON:

如果您不想对它做任何事情,请将其存储为text类型(我绝对不推荐,因为您不知道未来会发生什么)。如果您想使用 Postgres 的 JSON 函数,您应该将其存储为jsonjsonb键入 ( https://www.postgresql.org/docs/current/static/datatype-json.html )。

jsonb主要是节省空间(更多元数据)的开销,但通常在操作上要快得多。

进一步阅读

PostgreSQL引入JSONB的解释

PostgreSQL 中 JSONB 数据类型的更快操作


推荐阅读