首页 > 解决方案 > postgresql 错误 [42P17]:错误:尝试从父表创建子表时,“eMAR_201501”未分区

问题描述

我正在尝试创建现有表的分区,它说分区未启用我该如何修复它。基本上我想创建一个非常大的现有表的分区,让我知道我该怎么做,我也不能使用这个选项启用分区

在此处输入图像描述

这就是我创建分区的方式

CREATE TABLE public."eMAR_2012" PARTITION OF public."eMAR_201501"
   FOR VALUES FROM ('2012-01-01 12:00 AM') TO ('2019-12-31 11:59 PM');

标签: postgresql

解决方案


您不能只将分区添加到非分区表。如果要对现有数据重新分区,您唯一能做的就是创建一个带有所需分区的空分区表,然后将数据从非分区表复制到分区表。

如果所有现有数据都可以放入单个分区,您可以将现有表重命名为不同的名称,使用“旧”表名创建一个新的分区表,然后将现有表作为分区附加到新的创建分区表。如果实施分区以快速删除旧/过时的行,这通常使用。

但同样:如果现有数据需要分布在多个分区之间,唯一的方法是将数据从旧的非分区表复制到分区表中。


推荐阅读