1.postgres15逻辑备份恢复

备份参数说明:

**********************连接选项*********************************
-h, --host=HOSTNAME    #服务器ip
-p, --port=PORT        #端口号
-U, --username=NAME    #用户名
-W, --password         #密码
-d, --dbname=DBNAME    #数据库名
-n, --schema=PATTERN   #schema名称

**********************通用选项*********************************
-f, --file=FILENAME    #文件名
-?, --help             #帮助

**********************控制输出内容选项*************************
-c, --clean            #在重新创建之前清理(删除)数据库对象;如果不使用该参数,还原时将不会清理(删除)对象,可能会造成重复添加数据的问题,典型的情况是会出现多条一模一样的数据
-C, --create           #在转储文件中添加创建数据库语句,还原时如果存在目标数据库,会报个无法创建的错误,还原时如果不存在目标数据库,则会自动创建目标数据库;常用于将转储文件还原到不存在“备份目标数据库名”的数据库中
-s, --schema-only      #只转储数据库结构,不转储数据
-a, --data-only        #只转储数据,不转储模式
-t, --table=TABLE      #只转储指定表;一个-t选项只能指定一个表,如果需要排除多个表,需要每个表都使用-t标识
-T, --exclude-table=TABLE    #指定不转储的表;一个-T选项只能指定一个表,如果需要排除多个表,需要每个表都使用-T标识
--if-exists                  #使用IF EXISTS来删除已有对象;如果不使用该选项,还原数据时如果不存在对象,删除时会报错
--inserts                    #将数据转储为插入命令(标准的insert语句),而不是复制命令;使用该选项后,转储的sql可读性强,便于编辑

(1).备份

注:使用su – postgres 切换后执行备份命令

1).导出数据库结构及数据

pg_dump -h 127.0.0.1 -p 5432 -U wang_user -d wangdb --schema=wang_schema  --insert --if-exists -c -f ./wang_schema.sql

导出内容如下:

--
-- PostgreSQL database dump
--

-- Dumped from database version 15.0
-- Dumped by pg_dump version 15.0

SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SELECT pg_catalog.set_config('search_path', '', false);
SET check_function_bodies = false;
SET xmloption = content;
SET client_min_messages = warning;
SET row_security = off;

DROP TABLE IF EXISTS wang_schema.test2;
DROP TABLE IF EXISTS wang_schema.test1;
DROP SCHEMA IF EXISTS wang_schema;
--
-- Name: wang_schema; Type: SCHEMA; Schema: -; Owner: postgres
--

CREATE SCHEMA wang_schema;


ALTER SCHEMA wang_schema OWNER TO postgres;

SET default_tablespace = '';

SET default_table_access_method = heap;

--
-- Name: test1; Type: TABLE; Schema: wang_schema; Owner: wang_user
--

CREATE TABLE wang_schema.test1 (
    id integer,
    name character(32),
    age integer
);


ALTER TABLE wang_schema.test1 OWNER TO wang_user;

--
-- Name: test2; Type: TABLE; Schema: wang_schema; Owner: wang_user
--

CREATE TABLE wang_schema.test2 (
    id integer,
    name character(32),
    age integer
);


ALTER TABLE wang_schema.test2 OWNER TO wang_user;

--
-- Data for Name: test1; Type: TABLE DATA; Schema: wang_schema; Owner: wang_user
--

INSERT INTO wang_schema.test1 VALUES (1, '张三                              ', 18);


--
-- Data for Name: test2; Type: TABLE DATA; Schema: wang_schema; Owner: wang_user
--

INSERT INTO wang_schema.test2 VALUES (1, '李四                              ', 18);


--
-- Name: SCHEMA wang_schema; Type: ACL; Schema: -; Owner: postgres
--

GRANT ALL ON SCHEMA wang_schema TO wang_user;


--
-- PostgreSQL database dump complete
--

2).只导出指定数据库的表结构,不含数据

pg_dump -h 127.0.0.1 -p 5432 -U wang_user -d wangdb --schema=wang_schema  --insert --if-exists -c -s -f ./wang_schema2.sql

3).只导出指定数据库的数据,不含表结构

pg_dump -h 127.0.0.1 -p 5432 -U postgres -d wangdb --schema=wang_schema --insert -a -f ./wang_schema3.sql

4).只导出指定数据库的所有数据,但排除某些(某个)表,不含表结构(一个“-T”参数只能排除一个表,如果要排除多个表需要使用多个“-T”参数)

pg_dump -h 127.0.0.1 -p 5432 -U postgres -d wangdb -a --insert -T wang_schema.test1 -f ./wang_schema4.sql

5).只导出指定数据库的某些(某个)表的数据,其他表全部排除,不含表结构(指定导出多张表需要使用多个“-t”参数)

pg_dump -h 127.0.0.1 -p 5432 -U postgres -d wangdb -a --insert -t wang_schema.test1 -f ./wang_schema5.sql

(2).还原

注:还原命令:此处使用psql直接运行sql文件方式

还原参数说明:

-h, --host=HOSTNAME    #服务器ip
-p, --port=PORT        #端口号
-U, --username=NAME    #用户名
-d, --dbname=DBNAME    #数据库名
-f, --file=FILENAME    #文件名

还原命令如下:

psql -h 127.0.0.1 -p 5432 -U postgres -d wangdb --schema=wang_schema -f ./wang_schema.sql

 

原文地址:http://www.cnblogs.com/Yongzhouunknown/p/16796588.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性