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

PostgreSQL中快速导出自定义域至目标数据库的方法咨询

快速导出PostgreSQL自定义域到目标库的方法

用pg_dump精准导出域,跳过其他schema对象

不用全量导出schema,pg_dump支持直接只导出域对象,速度快很多:

pg_dump -U 用户名 -d 源数据库名 -n public --schema-only -t '*.domain' > domains.sql

这里的*.domain是pg_dump的特殊匹配规则,专门匹配所有自定义域。如果你的域不在public模式,把-n public换成对应的模式名就行,多个模式的话用-n 'schema1,schema2'。

导出后直接在目标库恢复:

psql -U 用户名 -d 目标数据库名 -f domains.sql

直接查系统表生成创建语句,速度拉满

要是pg_dump的方法还嫌慢,直接查PostgreSQL的系统表生成域的创建SQL,这是最快的方式:
在源数据库执行这条SQL:

SELECT format(
    'CREATE DOMAIN %I.%I AS %s%s;',
    n.nspname,
    d.typname,
    pg_catalog.format_type(d.typbasetype, d.typtypmod),
    CASE WHEN d.typnotnull THEN ' NOT NULL' ELSE '' END ||
    COALESCE(' CHECK (' || pg_get_constraintdef(c.oid) || ')', '')
) AS create_domain_stmt
FROM pg_catalog.pg_type d
JOIN pg_catalog.pg_namespace n ON d.typnamespace = n.oid
LEFT JOIN pg_catalog.pg_constraint c ON c.contypid = d.oid AND c.contype = 'c'
WHERE d.typtype = 'd';

把查询结果里的create_domain_stmt列内容全部复制出来,存成SQL文件,去目标库执行就行。这条查询会自动拉取所有模式下的自定义域,包括非空约束和检查约束。

后续操作

先把域恢复到目标库,再用你之前pg_dump -t导出的表数据恢复,就不会再报缺少域的错误了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 10:32:42