常用方法

  • pg_dumpall:适合导出cluster中所有业务库
  • pg_dump:适合单个库、schema级、表级导出
  • copy:适合单表或带条件sql结果导出(可导出为csv或txt格式)

一、 pg_dumpall

pg_dumpall可以转储cluster里的所有数据库(postgres、template0、template1除外)到一个sql文件,通过对cluster里的每个数据库调用pg_dump实现。pg_dumpall会dump出所有数据库公用的全局对象(即角色和表空间), 而pg_dump不会

注意工具版本,低版本pg_dumpall不能用于高版本db

#导出整个cluster
pg_dumpall -h localhost -U postgres -f /data/bak/entire_cluster.sql#仅备份角色和表空间定义:
pg_dumpall -h localhost -U postgres --port=5432 -f myglobals.sql --globals-only#仅备份角色定义
pg_dumpall -h localhost -U postgres --port=5432 -f myroles.sql --roles-only

详细参考   https://www.postgresql.org/docs/current/app-pg-dumpall.html

二、 pg_dump

pg_dump 只会导出表及数据、函数等。数据库和用户的创建需要提前在目标库建立。

注意工具版本,低版本pg_dump不能用于高版本db

#导出指定库(不含create database语句)
pg_dump -h连接串 -U读写用户 库名 > dbname.sql#导出指定库(包含create database语句)
pg_dump -h连接串 -U读写用户 -C 库名 > dbname.sql#仅导出指定库结构
pg_dump -h连接串 -U读写用户 -s 库名 > dbname.sql#导出指定库,结果以自定义压缩格式输出
pg_dump -h连接串 -U读写用户 -F c -b -v 库名 > dbname.backup#导出特定schema
pg_dump -h连接串 -U读写用户 -n schemaname 库名 > dbname.sql#导出指定库中hr和payroll两个schema中的所有数据,结果以自定义压缩格式输出
pg_dump -h连接串 -U读写用户 -F c -b -v -n hr -n payroll 库名 > hr_payroll.backup #导出指定库中除public schema以外的所有数据,结果以自定义压缩格式输出
pg_dump -h连接串 -U读写用户 -F c -b -v -N public 库名 > all_sch_except_pub.backup#导出特定的表
pg_dump -h连接串 -U读写用户 -t mytab 库名 > dbname.sql#导出某个db中所有以“pay”开头的表
pg_dump -h连接串 -U读写用户 -t *.pay* 库名 > dbname.sql

详细参考   https://www.postgresql.org/docs/current/app-pgdump.html

三、 导入

#postgres用户执行
psql -dmydb -f db.sql #或登录数据库后运行脚本
\i db.sql

四、 copy 使用

语法

#导出
COPY { table_name [ ( column_name [, ...] ) ] | ( query ) }TO { 'filename' | PROGRAM 'command' | STDOUT }[ [ WITH ] ( option [, ...] ) ]#导入
COPY table_name [ ( column_name [, ...] ) ]FROM { 'filename' | PROGRAM 'command' | STDIN }[ [ WITH ] ( option [, ...] ) ]
  • WITH csv:导入csv格式数据
  • HEADER:不导入第一行
  • encoding:指定编码

导出txt文件

psql -ddb_name -Uuser_name -W
#执行
COPY 表名 copy TO '/home/postgres/test.txt'
#或者
\copy test_copy to '/home/postgres/test.txt' 

导入txt文件

psql -ddb_name -Uuser_name -WCOPY 表名 copy FROM '/home/postgres/test.txt'
#或
\copy test_copy from '/home/postgres/test.txt' 

备注:COPY是sql命令,需要superuser权限,性能更好;\copy是元命令,不需要superuser权限

导出csv文件

把products表导出成csv文件

psql -ddb_name -Uuser_name -WCOPY products TO '/path/to/output.csv' WITH csv;

可以导出指定的列

psql -ddb_name -Uuser_name -WCOPY products (name, price) TO '/path/to/output.csv' WITH csv;

也可以配合查询语句

psql -ddb_name -Uuser_name -W -c "COPY (select * from temp_0524 where id='xxx') TO STDOUT with csv header" > home/postgres/temp_0524.csv
#或者
psql -dplatform -Ubom_rw -W
COPY (select * from temp_0524 where id='xxx') TO 'home/postgres/temp_0524.csv' with csv header

导入csv文件

跟上面的导出差不多,只是把TO换成FROM

注意导入前最好用ultra edit等工具将文件编码设置为UTF-8,传到linux服务器后再用vi -b检查下有没有乱码,否则非常容易出现奇奇怪怪的报错。

psql -ddb_name -Uuser_name -WCOPY products FROM '/path/to/input.csv' WITH csv;

不导入第一行,指定编码为UTF-8

\copy tmp_3 FROM '/data/tmp_3.csv' WITH csv HEADER encoding 'UTF-8';

关于pg_dump的源码实现分析,可以查看  http://mysql.taobao.org/monthly/2016/08/10/

参考

https://blog.csdn.net/lk_db/article/details/77971587

https://blog.csdn.net/weixin_34123613/article/details/89091285

pg 备份恢复(四)—— 逻辑备份(dump与copy导入导出)相关推荐

  1. MySQL-日志、完全备份恢复和增量备份恢复

    MySQL-日志.完全备份恢复和增量备份恢复 一.MySQL日志管理 1.MySQL日志文件 错误日志 二进制日志 中继日志 慢查询日志 二.查看日志状态命令 三.备份的重要性 1.造成数据丢失的原因 ...

  2. oracle数据备份 恢复,Oracle数据备份和恢复

    Oracle数据库的备份和恢复有很多种方法,是一个很大的话题,足可以写一本书,但是,本文只介绍采用exp和imp进行数据备份和恢复,这也是程序员最常用的方法. 本文涉及的备份与恢复的其它概念都是狭义的 ...

  3. oracle日志备份少数据库,oracle 账号锁定日志Oracle数据库全量备份恢复和部分备份恢复...

    Oracle数据库全量备份恢复和部分备份恢复 今天又遇到了Oracle数据库序列的问题,索性来个全库的备份和恢复.如下 imp/exp 方式 表模式备份: ­ oracle@sencloudServe ...

  4. android通讯录备份恢复代码逻辑

    android通讯录备份恢复 新增和修改 目前用的是新增,云端判断返回的手机号是否为空 /*** 向手机中录入联系人信息** @param contactListBean 要录入的联系人信息*/pub ...

  5. Oracle备份恢复一(手动备份)

        平台:redhat linux as5,oracle10g Oracle提供了许多方法来备份数据库.包括用户管理,恢复管理器(RMAN),Oracle数据泵等.用户管理允许用户通过操作系统命令 ...

  6. mysql的备份恢复原理_MySQL备份恢复-mysqldump原理

    +++++++++++++++++++++++++++++++++++++++++++ 标题:mysqldump对MySQL数据库备份恢复原理 时间:2019年2月23日 内容:mysqldump工具 ...

  7. Mysql 备份恢复与xtrabackup备份

    2017年即将过去,新年的钟声即将敲响.在这辞旧迎新的美好时刻,我向全国各族人民,向香港特别行政区同胞.澳门特别行政区同胞,向台湾同胞和海外侨胞,向工作在一线的运维工程师们,向为开源事业做出贡献的朋友 ...

  8. mysql gtid 备份恢复_MYSQL数据库备份恢复

    在实例存活的情况,可以在实例状态中查询ALL_GTID. 在实例崩溃的情况,无法在实例状态中查询ALL_GTID.可以通过查询BINLOG中的Previous-GTIDs计算来获得ALL_GTID. ...

  9. mysql备份恢复项目_mysql备份恢复之xtrabackup (XBK、Xbackup)

    10.1安装 10.1.1 安装依赖包: wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo y ...

  10. 日增进:Oracle dump文件的导入导出

    虽然去Oracle化进程如火如荼,但毋庸置疑的是在银行,政府等政企单位里,Oracle数据库的占比依然是个大头.在Oracle日常使用过程中经常会遇到数据迁移,当下诸如kettle,datax等ETL ...

最新文章

  1. php cookie使用实例h5,html5实现数据存储实例代码
  2. mysql ormlite_Loogn.OrmLite
  3. python request file upload_Python request 上传文件
  4. 牛客多校4 - Ancient Distance(树上倍增+dfs序+线段树)
  5. C# 8中的范围类型(Range Type)
  6. jpa 查询集合_避免懒惰的JPA集合
  7. Spring AOP(通知、连接点、切点、切面)
  8. html滚动选择框代码,如何使用最简单纯Css代码美化checkbox复选框、radios单选框和滑动按钮...
  9. centos7.6 LNMP新版本
  10. 阶段5 3.微服务项目【学成在线】_day03 CMS页面管理开发_12-删除页面-服务端-接口开发...
  11. Java web server 之 Jetty
  12. MySQL 8.0 OCP 1Z0-908认证考试题库1
  13. 分享一下“rmvb转avi“的操作技巧,3步搞定
  14. c语言绝对值大小并输出原值,c语言中绝对值大小的比较
  15. Orthogonal greedy algorithm降维
  16. SMILES Enumeration
  17. 线程Signaled nonsignaled状态的意思
  18. 病案首页计算机管理系统功能一般不包括,病案管理系统
  19. JVM(java堆)
  20. python的内存调优_python内存机制与垃圾回收、调优手段

热门文章

  1. ps如何制作霓虹字体
  2. B2C电商项目(第八天、用户认证、单点登录、Oauth2认证、项目认证开发、认证服务对接网关、登录页、SpringSecurity 权限控制)
  3. 医院时钟系统(卫星校时钟)设计与答疑
  4. python实现——视频转桌面壁纸
  5. 算法11 抓住波粒二象性的火星人
  6. 我是如何从头写一篇顶级论文的
  7. 如何将html改成mht格式,如何编辑mht格式的文件,什么是mht?
  8. JavaScript模式:字面量和构造函数
  9. 用计算机用语说唯美的话,100句唯美说说qq空间句子合集
  10. 模拟与仿真两个词的区别