DB2转PostgreSQL:执行ALTER TABLE DETACH PARTITION语句报错
问题排查与解决
错误原因
PostgreSQL的分区分离语法和DB2存在差异:
- DB2使用
INTO子句指定分离后生成的新表名及所属schema - PostgreSQL的
DETACH PARTITION语法不需要INTO子句,执行分离操作后,分区会直接成为独立的表,表名就是原分区的名称
你写的语句沿用了DB2的语法,PostgreSQL无法识别INTO关键字,因此抛出语法错误。
解决方法
步骤1:执行分区分离
使用PostgreSQL标准的分区分离语句,去掉INTO部分:
ALTER TABLE EMP.USER DETACH PARTITION ID_CUST_111111;
执行后,原分区ID_CUST_111111会成为当前schema下的独立表。
步骤2:调整表的schema和名称(按需操作)
如果需要将分离后的表移动到DATA_PRTTN schema并命名为ID_CUST_111111_USER,可执行以下语句:
- 移动到目标schema:
ALTER TABLE ID_CUST_111111 SET SCHEMA DATA_PRTTN;
- 重命名表:
ALTER TABLE DATA_PRTTN.ID_CUST_111111 RENAME TO ID_CUST_111111_USER;
或者合并为一条语句完成操作:
ALTER TABLE ID_CUST_111111 SET SCHEMA DATA_PRTTN, RENAME TO ID_CUST_111111_USER;
内容的提问来源于stack exchange,提问作者VimKumar
相关产品推荐
相关产品推荐

