在 postgresql、选项数组或对象中插入 jsonb 数据,有效方式
Posted
技术标签:
【中文标题】在 postgresql、选项数组或对象中插入 jsonb 数据,有效方式【英文标题】:insert jsonb data in postgresql, option array or objects, valid way 【发布时间】:2018-04-18 06:25:12 【问题描述】:我有这个更新,我已经阅读了 postgresql 文档,但不清楚如何插入数据,一些教程选项:
1.with ''
2.with
3.with '[]' <-- array of objects
并且大多数人不'使用'::jsonb',如上所示:
https://www.postgresql.org/docs/9.4/static/datatype-json.html
这是我的代码:
UPDATE customer set phones =' "type": "mobile", "phone": "001001" ,
"type": "fix", "phone": "002002" '::jsonb
where id ='4ca27243-6a55-4855-b0e6-d6e1d957f289';
我收到此错误:
ERROR: invalid input syntax for type json
LINE 1: UPDATE customer set phones =' "type": "mobile", "phone": ...
^
DETAIL: Expected string or "", but found "".
CONTEXT: JSON data, line 1: ...
SQL state: 22P02
Character: 29
我只需要记录一些电话,需要附在一个大牌对象中吗?我的意思是对于 javascript,对象数组不是对象,但我不知道 postresql 的 jsonb 中是否接受它
电话:[ "type": "mobile", "phone": "001001" , “类型”:“修复”,“电话”:“002002”]
【问题讨论】:
【参考方案1】:''
是 postgres 中的数组类型。如果您使用jsonb
,请使用常规'[]'
作为数组:
so=# select jsonb_pretty('"phones":[ "type": "mobile", "phone": "001001" , "type": "fix", "phone": "002002" ] ');
jsonb_pretty
"phones": [
"type": "mobile",
"phone": "001001"
,
"type": "fix",
"phone": "002002"
]
(1 row)
Time: 0.486 ms
或:
so=# select jsonb_pretty('[ "type": "mobile", "phone": "001001" , "type": "fix", "phone": "002002" ]');
jsonb_pretty
[
"type": "mobile",
"phone": "001001"
,
"type": "fix",
"phone": "002002"
]
(1 row)
【讨论】:
【参考方案2】:示例 1(对象):
CREATE TABLE customer
contact JSONB
update customer
set contact = ' "phones":[ "type": "mobile", "phone": "001001" , "type": "fix", "phone": "002002" ] '
where id = '4ca27243-6a55-4855-b0e6-d6e1d957f289';
示例2(数组):
CREATE TABLE customer
phones JSONB
update customer
set phones = '[ "type": "mobile", "phone": "001001" , "type": "fix", "phone": "002002" ]'
where id = '4ca27243-6a55-4855-b0e6-d6e1d957f289';
注意事项:
-
我的 PostgreSQL 版本
select version();
PostgreSQL 11.2 (Debian 11.2-1.pgdg90+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516, 64-bit
-
确保用双引号将键和值括起来。
【讨论】:
完美答案。你能告诉我如何在PostgreSQL中存储点(经度,纬度) @IrshadKhan PostGIS 可能是您的答案,它是 PostgreSQL 的空间和地理对象:***.com/questions/8150721/…以上是关于在 postgresql、选项数组或对象中插入 jsonb 数据,有效方式的主要内容,如果未能解决你的问题,请参考以下文章