postgresql 使用命令进行导入和导出
一般情况下,可以直接用 navicat 等工具进行导入和导出。
但是一般工具有局限性,比如导出不了 SERIAL 及其依赖的序列。
因此,我们使用 postgresql 自带的命令(如:pg_dump、pg_dumpall、pg_restore、pg_basebackup等)进行导入和导出。
- pg_dump 用于单个数据库的备份和恢复
- pg_dumpall 用于整个集群的备份
- pg_basebackup 用于物理备份
参考文档
导出
1pg_dump -h <hostname> -p <port> -U <username> -d <dbname> -n <schemaname> -t <tablename> -j <njobs> -f <filename>
参数说明:
- -h :主机名或IP。
- -p :数据库服务的端口号。
- -U :登录RDS PostgreSQL数据库的账号。
- -d :指定要连接的数据库的名称,默认为postgres。
- -n :指定数据库的模式,默认为public。
- -t :指定导出的表名(可选)。
- -j :同时执行备份作业的并发数(可选)。
- -f :文件的存储路径。
- -s :只储存对象,不保存数据。
- -a :不储存对象,只保存数据。
- -O :跳过对象所有权的恢复(如果备份后要恢复到其他数据库,并且对象所在的用户前后不一致,一定要加该选项)。
- -c :清理(删除)数据库对象后再重新创建(该参数请谨慎使用,因为会导致原有数据的丢失!!!)。
- –column-inserts :作为带有列名的INSERT命令转储数据。
常用示例:
1# 备份tob数据库、多个模式下的所有表(或视图)
2pg_dump -h 210.210.210.17 -p 5432 -U postgres -d tob -n public -n cent_glyyb_zygl_yswb_uat_schema -f d:/tables.sql
3
4# 备份tob数据库、public模式下的多个指定的表
5pg_dump -h 210.210.210.17 -p 5432 -U postgres -d tob -t tj_jj_province_month_jk -t backup_tables -f d:/tables.sql
6
7# 备份test数据库、basedata模式下的所有表(或视图)
8pg_dump -h 127.0.0.1 -p 5432 -U root -d test -n basedata > d:/backup.sql
9
10# 备份test数据库、basedata模式下的所有表(或视图):只生成结构,不保存数据;并去掉对象的所有权
11pg_dump -h 127.0.0.1 -p 5432 -U root -d test -n basedata -s -O > d:/backup.sql
12
13# 备份test数据库、basedata模式下的所有表的数据:不生成结构
14pg_dump -h 127.0.0.1 -p 5432 -U root -d test -n basedata -a > d:/backup.sql
导入
1psql -h <hostname> -p <port> -U <username> -d <dbname> -f <filename>
常用示例:
1# 导入结构和数据到test数据库
2psql -h 127.0.0.1 -p 5432 -U root -d test -f d:/tables.sql
注意事项
- 迁移时注意版本兼容性。
评论