Postgresql 是否可以复制表并将新表转换为分区表
我正在尝试从现有表中创建一个分区表 为此,我写了这个查询,但我的语法似乎不正确 创建表\u复制为 按范围datecalcul从表分区中选择*; 请注意,datecalcul是一个时间戳列类型Postgresql 是否可以复制表并将新表转换为分区表,postgresql,Postgresql,我正在尝试从现有表中创建一个分区表 为此,我写了这个查询,但我的语法似乎不正确 创建表\u复制为 按范围datecalcul从表分区中选择*; 请注意,datecalcul是一个时间戳列类型 我的主要问题是,是否可以复制postgreSQL表并将新表转换为分区表?为什么不先创建表,然后向其中插入数据: -- step 1 - declare table defintion create table table_Duplicate ( < copy table structure from
我的主要问题是,是否可以复制postgreSQL表并将新表转换为分区表?为什么不先创建表,然后向其中插入数据:
-- step 1 - declare table defintion
create table table_Duplicate (
< copy table structure from table >
) PARTITION BY RANGE (datecalcul);
-- step 2 - declare partitions
create table tablename_2021 PARTITION OF table_Duplicate
for values from ('2021-01-01') TO ('2021-12-31');
create table tablename_2020 PARTITION OF table_Duplicate
for values from ('2020-01-01') TO ('2020-12-31');
...
-- step 3 create indexes
create index on tablename_2021 (datecalcul);
create index on tablename_2020 (datecalcul);
...
-- step 4 insert data
insert into table_Duplicate
select * from table;
从PostgreSQL v13开始,您可以使用逻辑复制。谢谢!查询的第一部分正在工作。但是,当我尝试从无分区表中集成数据时,我遇到了一个错误,是因为datecalcul是tiemstamp字段吗?@Kakoo16 oops错过了一个重要步骤,请参阅更新的答案非常感谢!现在开始工作了!我想时间戳无关紧要?@Kakoo16是的,我只是想给你们一个例子,按照对你们场景有意义的范围对你们的表进行分区,并确保分区覆盖你们数据中所有可能的范围