如何将Odoo 14数据库导入PostgreSQL?导出全量带数据表方法咨询
Odoo Enterprise 14 导出全量含数据表操作指南
前置说明
导出dump时的报错通常是默认备份逻辑过滤了空表、或pg_dump参数配置错误导致的导出异常,可通过以下两种方式完成导出:
方案1:使用PostgreSQL原生命令导出(稳定性最高)
Odoo底层数据全部存储在PostgreSQL数据库中,直接调用pg_dump指定过滤条件即可导出所有含数据的表:
- 首先登录到PostgreSQL所在的服务器,切换到postgres用户:
su - postgres - 先查询当前Odoo数据库下所有含数据的表,生成表列表:
SELECT table_name FROM information_schema.tables WHERE table_schema = 'public' AND table_type = 'BASE TABLE' AND (SELECT n_live_tup FROM pg_stat_user_tables WHERE relname = table_name) > 0;
- 将上一步查询得到的表名代入
pg_dump命令,执行导出:pg_dump -d 你的Odoo数据库名 -t 表名1 -t 表名2 -f 导出的dump文件路径.sql
如果需要批量导出所有符合条件的表,可直接拼接参数执行:pg_dump -d 你的Odoo数据库名 $(psql -d 你的Odoo数据库名 -t -c "SELECT string_agg('-t '||quote_ident(table_name), ' ') FROM information_schema.tables WHERE table_schema = 'public' AND table_type = 'BASE TABLE' AND (SELECT n_live_tup FROM pg_stat_user_tables WHERE relname = table_name) > 0") -f 导出的dump文件路径.sql
方案2:通过Odoo内置数据库管理工具导出
- 访问Odoo实例的
/web/database/manager页面 - 选择对应数据库,点击「Backup」按钮
- 备份格式选择「Include data (zip)」,该选项会自动过滤无数据的系统空表,导出所有包含业务数据的表结构+数据
常见异常排查
- 如果导出时报权限错误,需确认执行
pg_dump的用户对Odoo数据库有只读以上权限 - 如果导出的dump体积异常偏小,可执行
SELECT count(*) FROM 表名确认对应表确实存在数据后再重新导出
内容的提问来源于stack exchange,提问作者Sami
相关产品推荐
相关产品推荐

