简而言之:我正在寻找一种无需复制数据即可将现有表添加到现有分区表的方法。
有一个这样的分区表:
CREATE TABLE partitioned_table
(
partition_key VARCHAR,
etl_created_at TIMESTAMP,
field1 VARCHAR, -- the actual table contains way more fields
field2 VARCHAR, -- for this question, the layout of the table
field3 DOUBLE PRECISION. -- is irrelevant
) PARTITION BY LIST(partition_key)
;
请注意,此表是使用 Postgres 分区的。
是否可以将以前填充的表添加到该表中,该表仅具有单个
partition_key
值的值,而无需复制所有数据?
例如假设还有一个表
partitioned_table_partition10
是这样创建的:
CREATE TABLE partitioned_table_partition10
(
partition_key VARCHAR,
etl_created_at TIMESTAMP,
field1 VARCHAR, -- the actual table contains way more fields
field2 VARCHAR, -- for this question, the layout of the table
field3 DOUBLE PRECISION. -- is irrelevant
)
;
我想知道是否可以直接“附加”
partitioned_table_partition10
作为partitioned_table
的分区。在伪 SQL 中,类似于:
ALTER TABLE partitioned_table ADD PARTITION partitioned_table_partition10 FOR VALUE('partition10`)
我为什么要问? 目前我有一个脚本可以并行创建这些分区。我最终对主表进行了大量的阻止交易 (
partitioned_table
)。
如果脚本将这些表创建为独立表,然后告诉 postgres 将这些独立表视为主表的分区,则此过程(希望)会更快一些。