2

如何在同一个 postgresql 数据库的模式之间最有效地移动相似表中的数据(相同的列数、数据类型。如果它们不一样,可以用我希望的视图来实现)?

编辑

抱歉含糊不清。我打算将其他模式用作不经常需要的数据的存档(以提高性能)。更准确地说,超过 2 年的数据将被存档。服务器下线是可以的,但不超过一天,最多2个。这是一个中型公司的会计软件。根据自由主义者的估计,一年中的记录数量不会接近一百万。

4

1 回答 1

5
insert into target_schema.table_one (col1, col2, col3)
select col1, col2, col3
from source_schema.other_table
where <some condition to select the data to be moved>;

如果你真的想“移动”数据(即从源表中删除行),你需要可以使用

如果表是你不能使用的外键的目标,那么truncate你需要使用

delete from source_schema.other_table
where <some condition to select the data to be moved>;

如果您愿意,可以将这两个步骤合并到一个语句中:

with deleted_data as (
   delete from source_schema.other_table
   where <some condition to select the data to be moved>;
   returning *
)
insert into target_schema.table_one (col1, col2, col3)
select col1, col2, col3
from deleted_data;
于 2013-04-17T20:29:58.547 回答