postgresql将结构化数据插入jsonb

postgresql将结构化数据插入jsonb,sql,json,postgresql,sql-insert,jsonb,Sql,Json,Postgresql,Sql Insert,Jsonb,我使用PostgreSQL 10.11,希望在jsonb字段中输入以下结构: { 领导:{ 名称:string, 预备:布尔型 }, 中学:{ { 名称:string, 预备:布尔型 }, } 所以lead是一个带有name和prep的对象,secondary是name和prep的数组。 我该怎么做?下面的脚本是用jsonb字段创建一个表: CREATE TABLE public.test01 ( name JSONB DEFAULT '{}'::jsonb NOT NULL ) WITH

我使用PostgreSQL 10.11,希望在jsonb字段中输入以下结构: { 领导:{ 名称:string, 预备:布尔型 }, 中学:{ { 名称:string, 预备:布尔型 },

} 所以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;
我正在尝试此插入,但出现错误:

INSERT INTO 
  public.test01
(
  name

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

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

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

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

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

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

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

你有三个
}
但只有一个
{
…你有三个
}
但只有一个
{
…第二部分应该是名称和prep的数组。但是,我在尝试上述查询时出错。@Msworkaholic:JSON中还有另一个问题,我也解决了。我还为我的答案添加了一个DB Fiddle,供您参考。感谢您对数组做了一些小的修改,插入public.test01(name)值('s){“lead”:{“name”:“Paint house”,“prep”:“yes”},“Secondary”:[{“name”:“John”,“prep”:“No”},{“name”:“Joe”,“prep”:“Y”}]}'::jsonb);你也可以举一个select的例子吗?@Msworkaholic:这实际上是关于你的JSON,而不是SQL本身。如果你有一个有效的JSON字符串,你可以这样做:
select'{“lead”:{“name”:“Paint house”,“prep”:“yes”},“Secondary”:{“name”:“John”,“prep”:“No”}“::jsonb myjson
第二部分应该是名称和prep的数组。但是,我在尝试上述查询时出错。@Msworkaholic:JSON中还有另一个问题,我也解决了。我还在我的答案中添加了一个DB Fiddle,供您参考。谢谢您,它对数组起到了作用,只是做了一点小小的更改,插入public.test01(name)值({“lead”:{“name”:“Paint house”,“prep”:“yes”},“Secondary”:[{“name”:“John”,“prep”:“No”},{“name”:“Joe”,“prep”:“Y”}]}’::jsonb);你也可以举一个select的例子吗?@Msworkaholic:这实际上是关于你的JSON,而不是SQL本身。如果你有一个有效的JSON字符串,你可以这样做:
select'{“lead”:{“name”:“Paint house”,“prep”:“yes”},“Secondary”:{“name”:“John”,“prep”:“No”}“::jsonb myjson