如何编写insert SQL语句,循环遍历对象数组中的每条记录并插入到记录中';相应地,有哪些具体的栏目?
首先,我想弄清楚如何在sql语句中编写一个对象数组(比如js),但我在互联网上找不到任何东西 我当然可以重复所有的insert语句,但我真的只想循环一个数据集,并将它们注入一个表中,用于一组列,这些列具有完全相同的insert语句和不同的值!但是,如果数据集像对象数组一样太复杂,那么似乎没有办法做到这一点?或者我必须写多个数组列表来表示每一列,这真的很愚蠢。。没有 谢谢 数据集示例如何编写insert SQL语句,循环遍历对象数组中的每条记录并插入到记录中';相应地,有哪些具体的栏目?,sql,json,postgresql,Sql,Json,Postgresql,首先,我想弄清楚如何在sql语句中编写一个对象数组(比如js),但我在互联网上找不到任何东西 我当然可以重复所有的insert语句,但我真的只想循环一个数据集,并将它们注入一个表中,用于一组列,这些列具有完全相同的insert语句和不同的值!但是,如果数据集像对象数组一样太复杂,那么似乎没有办法做到这一点?或者我必须写多个数组列表来表示每一列,这真的很愚蠢。。没有 谢谢 数据集示例 [ { name: 'abc', gender: 'male', }, { n
[
{
name: 'abc',
gender: 'male',
},
{
name: 'bbc',
gender: 'female',
},
{
name: 'ccc',
gender: 'male',
},
]
并将它们放入一个包含列的表中
nameHere
genderThere
您可以使用
jsonb_array_elements
从数组中提取每个JSON,然后将其用作插入的源:
create table x(name text, gender text);
insert into x (name, gender)
select t ->> 'name', t ->> 'gender'
from jsonb_array_elements(
'[
{
"name": "abc",
"gender": "male"
},
{
"name": "bbc",
"gender": "female"
},
{
"name": "ccc",
"gender": "male"
}
]'::jsonb) t;
在线示例:
更新(范围更改后)
要处理嵌套的JSON结构,需要将返回jsonb
->
的运算符与返回“纯文本”的运算符组合起来:
有关JSON运算符的更多详细信息,请参见您可以使用
jsonb_数组_元素
从数组中提取每个JSON,然后将其用作插入的源:
create table x(name text, gender text);
insert into x (name, gender)
select t ->> 'name', t ->> 'gender'
from jsonb_array_elements(
'[
{
"name": "abc",
"gender": "male"
},
{
"name": "bbc",
"gender": "female"
},
{
"name": "ccc",
"gender": "male"
}
]'::jsonb) t;
在线示例:
更新(范围更改后)
要处理嵌套的JSON结构,需要将返回jsonb
->
的运算符与返回“纯文本”的运算符组合起来:
有关JSON运算符的更多详细信息,请参见
这将输出一个表
name | gender
-----+-------
abc | male
bcc | female
ccc | male
您可以将其插入任何需要的表中
这将输出一个表
name | gender
-----+-------
abc | male
bcc | female
ccc | male
您可以将它插入任何您想要的表中@a_horse_,带有_no_名称感谢您的后续工作,我添加了一个示例,介绍了我尝试插入的内容achieve@a_horse_with_no_name谢谢你的跟进,我添加了一个关于我试图达到的目标的例子哦哦,那太棒了!只是有点好奇。如果数组还有一层嵌套,比如说
{name:{first:'a',last:'bc'},gender:'male',},
你能告诉我如何定位first
和last
嵌套对象吗?那只是在'name'
之后再加一个->
吗?哇哦,那太好了!只是有点好奇。如果数组还有一层嵌套,比如说{name:{first:'a',last:'bc'},gender:'male',},
你能告诉我如何定位first
和last
嵌套对象吗?是不是在'name'
之后再加一个->
?