如何将多个对象插入一个table?
How to insert multiple objects into one table?
有一个 table entityLinks,我想通过一个查询插入多个值。
table 是使用此查询定义的:
CREATE TABLE entityLinks(
id INTEGER NOT NULL references posts(id) ON DELETE CASCADE,
tag VARCHAR(255) NOT NULL references tags(tag) ON DELETE CASCADE);
用于插入的数据如下所示:
- 标签数组,例如 ['mytag1'、'mytag2、...];
与标签相关的实体的 - id(例如 post)。
我可以将它们组合成对象数组 ([{id: 1, tag: 'mytag1'}, {id:1, tag: 'mytag2'}, .. . ] ) 如果需要的话。此查询中所有标签的 ID 都相同,但一个查询与另一个查询不同。
我知道如何插入多个标签
INSERT INTO tags(tag)
SELECT * FROM unnest(::text[])
($1 - 是一个变量,像这样作为值传递 this.pool.query(query, [tags]) );
...但是当我尝试相同时,unnest
取消了所有级别的排列 ([ [1, 'mytag1'], [1, 'mytag2'],... ] => “1,'mytag1',1,'mytag2',...”。
错误是:error: malformed record literal: "1" (1 - is the id)
我尝试使用对象数组,但出现此错误:格式错误的记录文字:“{"id":179,"tag":"myTag1"}"
基本上我想插入与相同 id 链接的不同标签(对于一个查询相同),但也有兴趣了解如何一次插入多个对象(将来可能会有用)。
提前致谢!
这是你想要的吗?
INSERT INTO entitlyLinks (id, tag)
SELECT 1, tag
FROM unnest(::text[]) t(tag);
注意:我建议叫id
post_id
,这样一目了然。
在 @Gordon Linoff 的帮助下,我编写了正确的查询
INSERT INTO entityLinks(post_id, tag)
SELECT , tag
FROM unnest(::text[]) as tag;
也许对以后的人有用。
数据是这样传递的:
this.pool.query(queries.addLinks, [post_id, tags]);
post_id: number, tags: string[];
有一个 table entityLinks,我想通过一个查询插入多个值。 table 是使用此查询定义的:
CREATE TABLE entityLinks(
id INTEGER NOT NULL references posts(id) ON DELETE CASCADE,
tag VARCHAR(255) NOT NULL references tags(tag) ON DELETE CASCADE);
用于插入的数据如下所示:
- 标签数组,例如 ['mytag1'、'mytag2、...]; 与标签相关的实体的
- id(例如 post)。
我可以将它们组合成对象数组 ([{id: 1, tag: 'mytag1'}, {id:1, tag: 'mytag2'}, .. . ] ) 如果需要的话。此查询中所有标签的 ID 都相同,但一个查询与另一个查询不同。
我知道如何插入多个标签
INSERT INTO tags(tag)
SELECT * FROM unnest(::text[])
($1 - 是一个变量,像这样作为值传递 this.pool.query(query, [tags]) );
...但是当我尝试相同时,unnest
取消了所有级别的排列 ([ [1, 'mytag1'], [1, 'mytag2'],... ] => “1,'mytag1',1,'mytag2',...”。
错误是:error: malformed record literal: "1" (1 - is the id)
我尝试使用对象数组,但出现此错误:格式错误的记录文字:“{"id":179,"tag":"myTag1"}"
基本上我想插入与相同 id 链接的不同标签(对于一个查询相同),但也有兴趣了解如何一次插入多个对象(将来可能会有用)。
提前致谢!
这是你想要的吗?
INSERT INTO entitlyLinks (id, tag)
SELECT 1, tag
FROM unnest(::text[]) t(tag);
注意:我建议叫id
post_id
,这样一目了然。
在 @Gordon Linoff 的帮助下,我编写了正确的查询
INSERT INTO entityLinks(post_id, tag)
SELECT , tag
FROM unnest(::text[]) as tag;
也许对以后的人有用。 数据是这样传递的:
this.pool.query(queries.addLinks, [post_id, tags]);
post_id: number, tags: string[];