postgresql将结构化数据插入jsonb
我使用PostgreSQL 10.11,希望在jsonb字段中输入以下结构: { 领导:{ 名称:string, 预备:布尔型 }, 中学:{ { 名称:string, 预备:布尔型 }, } 所以lead是一个带有name和prep的对象,secondary是name和prep的数组。 我该怎么做?下面的脚本是用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
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