You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

跨Schema复制含自定义枚举类型的表数据时类型转换报错解决

解决不同Schema下同名枚举类型的数据复制问题

PostgreSQL中,不同Schema下的同名自定义枚举属于完全独立的类型,因此无法直接通过CAST完成跨Schema的枚举类型转换。不过因为两个枚举的取值完全一致,我们可以通过先转成文本,再转目标枚举的方式绕过这个限制。

修改后的SQL语句如下:

INSERT INTO public.item
SELECT 
    itemid, 
    collectionid, 
    signature, 
    CAST(type::text AS public.item_type), 
    status
FROM test.item
WHERE status LIKE 'OK%'
ON CONFLICT DO NOTHING;

或者用更简洁的链式转换写法:

INSERT INTO public.item
SELECT 
    itemid, 
    collectionid, 
    signature, 
    type::text::public.item_type, 
    status
FROM test.item
WHERE status LIKE 'OK%'
ON CONFLICT DO NOTHING;

原理是:先将test.item_type类型的字段转为字符串类型(枚举值本身就是对应的字符串),再将字符串转为public.item_type枚举类型——由于两个枚举的取值完全匹配,这个转换不会出现错误。

内容的提问来源于stack exchange,提问作者TheQuestioner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 06:22:19