PostgreSQL備份恢復

PostgreSQL備份恢復假死

如果dump出來的是單個表,那麼恢復就必須是單個表,即-t tableName
背景:
postgreSQL 提供的備份功能 pg_dump:不支持跨數據庫操作、不支持部分數據
需要備份的並非整個DB,而是其中的部分表

1.備份表結構

這裏主要需要的信息有:建表SQL、表的主鍵外鍵、表的索引
先通過導出數據庫結構的方式,用戶模式下
pg_dump -U postgres -h 127.0.0.1 -p 5432 -s -f DBName.sql DBName
之後從中找到需要的表SQL,以及關係等
亦可查看得到具體的信息
\d TableName

2.備份數據文件

在目標存放路徑下:
採用單個表的方式
pg_dump -U postgres -h 127.0.0.1 -p 5432 -Fc -t record DBName > DBNamerecord.dump

pg_dump -U postgres -h 127.0.0.1 -p 5432 -Fc -t customer DBName > DBNamecustomer.dump

亦或是此種,指定路徑
pg_dump -U postgres -h 127.0.0.1 -p 5432 -Fc -t customer DBName > /testspeakdb.dump
說明:-t指定表名,-Fc二進制模式(使用此種即可)

3.新建DB

CREATE DATABASE tbackDBName WITH OWNER = postgres ENCODING=‘UTF-8’;

4.新DB下創建表

據2中表結構,注意暫時創建表,以及表所有權
eg:customer表
CREATE TABLE customer (
phone character varying(20) NOT NULL,
gender character varying(10),
birth_year integer,
);

ALTER TABLE customer OWNER TO postgres;

5.恢復

在dump存放路徑下:
pg_restore -U postgres -h 127.0.0.1 -p 5432 -t record -d tbackDBName2 DBNamerecord.dump > a.txt 2>&1

說明:-t指定表名,-d DB名稱

6.檢查

count、以及查看幾行數據

7.表的最終完善

表的主鍵外鍵、表的索引
eg:customer表
ALTER TABLE ONLY customer
ADD CONSTRAINT customer_pkey PRIMARY KEY (phone);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章