PostgreSQL自带一个客户端pgAdmin,里面有个备份,恢复选项,也能对数据库进行备份 恢复(还原),但最近发现数据库慢慢庞大的时候,常常出错,备份的文件过程当中出错的概率那是至关大,手动调节灰常有限。因此一直寻找完美的备份恢复方案。 linux
梦里寻他千百度,伊人却在灯火阑珊处...其实PostgreSQL内置很多的工具,寻找的备份恢复方案就在其中:pg_dump,psql。这两个指令在数据库的安装目录下,好比我本身本地安装的,路径形如:C:\Program Files\PostgreSQL\9.0\;而后进入到bin文件夹,会看到很多的exe文件,这就是PostgreSQL内置的工具了。里面会找到pg_dump.exe,psql.exe两个文件。咱们怎么用他们? sql
用法: 数据库
备份数据库,指令以下: windows
pg_dump -h 164.82.233.54 -U postgres databasename > C:\databasename.bak
开始-运行-cmd 弹出dos控制台;而后 在控制台里,进入PostgreSQL安装目录bin下: 工具
cd C:\Program Files\PostgreSQL\9.0\bin post
最后执行备份指令:pg_dump -h 164.82.233.54 -U postgres databasename > C:\databasename.bak
指令解释:如上命令,pg_dump 是备份数据库指令,164.82.233.54是数据库的ip地址(必须保证数据库容许外部访问的权限哦~),固然本地的数据库ip写 localhost;postgres 是数据库的用户名;databasename 是数据库名。> 意思是导出到C:\databasename.bak文件里,若是没有写路径,单单写databasename.bak文件名,那么备份文件会保存在C:\Program Files\PostgreSQL\9.0\bin 文件夹里。 spa
psql -h localhost -U postgres -d databasename < C:\databasename.bak
指令解释:如上命令,psql是恢复数据库命令,localhost是要恢复到哪一个数据库的地址,固然你能够写上ip地址,也就是说能远程恢复(必须保证数据库容许外部访问的权限哦~);postgres 就是要恢复到哪一个数据库的用户;databasename 是要恢复到哪一个数据库。< 的意思是把C:\databasename.bak文件导入到指定的数据库里。 rest
以上全部的是针对windows而言的,若是在linux下,会不会有效? code
在linux里依然有效。有一个值得注意的是:若是直接进入PostgreSQL的安装目录bin下,执行命令,可能会出现 找不到pg_dump,psql 的现象,咱们在能够这样: ip
备份:
/opt/PostgreSQL/9.0/bin/pg_dump -h 164.82.233.54 -U postgres databasename > databasename.bak
恢复:
/opt/PostgreSQL/9.0/bin/psql -h localhost -U postgres -d databasename < databasename.bak
备份表
pg_dump --host 主机名 --port 5432 --username 用户名 -t 表名 >C:/备份后的名称.sql 数据库名
备份表
pg_dump -i -h 主机名 -p 5432 -U 用户名-F c -v -f "C:/DataCatalog.backup" -t 表名 数据库名
pg_restore -i -h 主机名 -p 5432 -U postgres -d 数据库名 -a -t 数据库表 -v "C:/DataCatalog.backup"
pg_dump --host 主机名 --port 5432 --username 用户名 -t 表名 >C:/备份后的名称.sql 数据库名
这种形式能够生成sql语句文件 ,,还不知道以何种形式还原;
删除列名
ALTER TABLE 表名 DROP COLUMN 列名
修改字段长度
alter table 表名 alter column 列名 type varchar(100) ;
设置序列
SELECT setval('public.seq_test_student', 10, true);
ALTER TABLE tableName
DROP CONSTRAINT projectbill_pkey,
DROP COLUMN "id",
ADD COLUMN "id" serial8 NOT NULL, //自动增加
ADD CONSTRAINT projectbill_pkey PRIMARY KEY ("id"); 主键
-- ALTER TABLE projectbill ADD COLUMN id integer PRIMARY KEY;
备份表:pg_dump -t 要备份的表 -f test_data -h 主机名 -U 用户名 -p 5432 数据库名 还原表:psql.exe -h 主机 -U 用户名 -p 5432 -d 数据库 < test_data test_data是备份数据,此处放在postgre/bin/test_data中能够找到