【问题标题】:postgresql insert a structured data into jsonbpostgresql 将结构化数据插入 jsonb
【发布时间】:2020-06-28 01:03:21
【问题描述】:

我使用 PostgreSQL 10.11,并希望在 jsonb 字段中输入以下结构: { 带领: { 名称:字符串, 准备:布尔 }, 次要:{ { 名称:字符串, 准备:布尔 },

{
    name: string,
    prep: boolean
}

} 所以lead是一个有name和prep的对象,secondary是一个name和preps的数组。 我怎样才能做到这一点?下面的脚本是创建一个带有 jsonb 字段的表:

CREATE TABLE public.test01 (
  name JSONB DEFAULT '{}'::jsonb NOT NULL
) 
WITH (oids = false);

ALTER TABLE public.test01
  ALTER COLUMN id SET STATISTICS 0;

COMMENT ON COLUMN public.test01.name
IS '''[]''';


ALTER TABLE public.test01
  OWNER TO postgres;

我正在尝试这个插入但得到错误:

INSERT INTO 
  public.test01
(
  name

)
VALUES 
('  
    {"lead": 
        "name": "Paint house", 
        "prep": "yes"}
     , 

    "Secondary":
        "name": "John", 
        "prep", "No"}
    }
');

这是我第一次使用 jsonb,所以选择示例也有助于了解如何读取数据。

【问题讨论】:

  • 你得到了三个 } 但只有一个 {...

标签: sql json postgresql sql-insert jsonb


【解决方案1】:

您的 JSON 格式不正确。大概,你的意思是:

INSERT INTO public.test01 (name)
VALUES (
'{
    "lead": { 
        "name": "Paint house", 
        "prep": "yes"
    }, 
    "Secondary": {
        "name": "John", 
        "prep": "No"
    }
}'::jsonb);

Demo on DB Fiddle

【讨论】:

  • 次要部分应该是名称和准备的数组。但是,尝试上述查询时出现错误。
  • @Msworkaholic:我也修复了 JSON 中的另一个问题。我还在我的答案中添加了一个 DB Fiddle,供您参考。
  • 谢谢 它也适用于一个稍有变化的数组 INSERT INTO public.test01 (name) VALUES ('{ "lead": { "name": "Paint house", "prep": “是”},“次要”:[{“名称”:“约翰”,“准备”:“否”},{“名称”:“乔”,“准备”:“Y”}] }':: jsonb);
  • 你能举个select的例子吗?
  • @Msworkaholic:这真的是关于你的 JSON,而不是关于 SQL 本身。如果你有一个有效的 JSON 字符串,你可以这样做:select '{ "lead": { "name": "Paint house", "prep": "yes" }, "Secondary": { "name": "John", "prep": "No" } }'::jsonb myjson
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-02
  • 2018-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-14
相关资源
最近更新 更多