Postgres导出数据库如何保留index、view等结构?使用sql dump可行吗?
Postgres 数据库全量导出方案解答
完全可以通过Postgres原生的pg_dump工具导出SQL dump文件,实现保留索引、视图、约束、触发器、函数、权限等所有数据库对象和配置,用户导入后无需额外调整即可直接使用。
导出操作(你侧执行)
- 推荐使用自定义二进制格式导出,压缩比高、导入速度快,命令如下:
pg_dump -U 你的数据库用户名 -d 待导出的数据库名 --no-owner -Fc -f 导出文件.dump
参数说明:
--no-owner:清除原库的所有者权限绑定,避免用户本地用户名和你侧不一致导致的导入报错,适配性更强-Fc:指定导出为Postgres自定义二进制格式- 如果需要生成可直接阅读的纯文本SQL文件,将
-Fc替换为-Fp,导出文件后缀改为.sql即可 - 若需要排除部分临时表/测试表,可在命令中添加
--exclude-table=需排除的表名参数进行过滤 - 若你的库用到了PostGIS等科研场景常用的自定义扩展,dump文件会自动保留扩展依赖声明,无需额外配置
导入操作(用户侧执行)
用户仅需要提前在本地安装对应大版本的Postgres(跨小版本兼容,大版本尽量和你导出时的版本保持一致即可),新建一个空数据库后执行对应命令就行:
- 二进制
.dump格式导入命令:
pg_restore -U 用户本地Postgres用户名 -d 新建的空数据库名 导出文件.dump
- 纯文本
.sql格式导入命令:
psql -U 用户本地Postgres用户名 -d 新建的空数据库名 -f 导出文件.sql
导入完成后用户即可直接使用,不需要手动建表、配置约束、创建索引或视图,所有配置会和你原库1:1还原,完全解决此前CSV导出需要用户自行配置数据库的各类问题。
内容的提问来源于stack exchange,提问作者zhouhufeng
相关产品推荐
相关产品推荐

