我已经将我的表分区如下:
CREATE TABLE customer
(
c_custkey integer NOT NULL,
c_name character varying(25) NOT NULL,
c_address character varying(40) NOT NULL,
c_city character(10) NOT NULL,
c_nation character(15) NOT NULL,
c_region character(15) NOT NULL,
c_phone character(15) NOT NULL,
c_mktsegment character(10)
) PARTITION BY List(c_region) ;
create table customer_1 PARTITION of customer for values in ('EUROPE');
create table customer_2 PARTITION of customer for values in ('AFRICA');
create table customer_3 PARTITION of customer for values in ('AMERICA');
create table customer_4 PARTITION of customer for values in ('MIDDLE EAST');
create table customer_5 PARTITION of customer for values in ('ASIA');
我的分区充满了数据。我想在不丢失数据的情况下重新分区我的表。如何用 PostgreSQL 做到这一点?
本质上,您创建一个新的分区表并用旧表中的数据填充它,例如使用
INSERT INTO ... SELECT
. 然后您可以删除旧表并重命名新表。这需要停机时间。如果您介意停机,请从旧数据库的模式转储创建一个新数据库,但您的分区表现在分区不同。然后在两个数据库之间设置逻辑复制,并在副本赶上后立即切换。