postgresql将结构化数据插入jsonb

Ms *_*lic 7 sql postgresql json sql-insert jsonb

我使用 PostgreSQL 10.11 并且希望将以下结构输入 jsonb 字段:

{
 lead: {
    name: string,
    prep: boolean
 },
 secondary: {
   {
       name: string,
        prep: boolean
    },
    {
        name: string,
        prep: boolean
    }
}
Run Code Online (Sandbox Code Playgroud)

因此,lead 是一个带有 name 和 prep 的对象, secondary 是一个包含 name 和 prep 的数组。我怎样才能做到这一点?下面的脚本是创建一个带有 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;
Run Code Online (Sandbox Code Playgroud)

我正在尝试此插入但出现错误:

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

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

GMB*_*GMB 12

您的 JSON 格式错误。想必,你的意思是:

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

DB Fiddle 上的演示