Postgres批量插入不同的模式

时间:2020-08-25 17:57:09

标签: postgresql

我们目前将事物存储到Redis中以进行临时聚合,并且有一个工作程序可以批量插入Postgres中。有没有一种方法可以在单个Insert事务中跨多个模式进行批量插入?这将消除在Redis中聚合事物的需要。或者,是否有更好的方法来汇总请求?

非常感谢您的帮助。

4 个答案:

答案 0 :(得分:1)

这实际上取决于您对“单次插入交易”的含义。

单个INSERT语句只能影响一个特定的表。但是,您仍然可以BEGIN进行事务处理(取决于实现方式),在其中执行所有INSERT,然后COMMIT进行事务处理。 这将比在许多事务上执行所有INSERT效率更高,因为它避免了多余的“握手”。

https://www.postgresql.org/docs/current/sql-begin.html

答案 1 :(得分:0)

您是否尝试过创建可更新的视图,该视图引用两个表,然后批量插入该视图?

答案 2 :(得分:0)

您是否正在寻找类似的东西?

with data (c1, c2) as (
  values (1,2),(10,20),(30,40)
), s1_insert as (
  insert into schema_one.table_1(c1, c2)
  select c1, c2
  from data
)
insert into schema_two.table_2(col1, col2)
select c1, c2
from data;

答案 3 :(得分:-1)

如果执行插入语句,则将发生单个事务,并且只能插入单个表中(因此,在单个事务中 完全不可能跨多个模式插入)