1. 表的逻辑备份方式
1) 备份表结构及数据:
create table new_tablename as select * from old_tablename;
或
select * into new_tablename from old_tablename where 1=1;
2) 仅备份表结构(不备份数据):
select * into new_table name from old_tablename where 1<>1;
3) 批量备份表结构及数据【通过如下语句生成备份指令,拷贝出来直接执行即可生成备份表】:
select 'create table back_'||tablename||' as select * from '||tablename||';' from pg_catalog.pg_tables t where t.schemaname='public';
或
select 'select * into back_'||tablename||' from '||tablename||' where 1=1;' from pg_catalog.pg_tables t where t.schemaname='public';
4) 批量备份表结构(不备份数据)【通过如下语句生成备份指令,拷贝出来直接执行即可生成备份表】:
select 'select * into back_'||tablename||' from '||tablename||' where 1<>1;' from pg_catalog.pg_tables t where t.schemaname='public';
注释:此备份目的,仅仅只是为了防止在SP开发中因误操作导致数据错误影响测试或开发;
2. 备份数据库
1) 转储一个数据库:
$ pg_dump mydb > db.out
2) 重载这个数据库:
$ psql -d database -f db.out
3) 输出一个叫 mydb 的包含BLOB 的数据库到一个 tar 文件:
$ pg_dump -Ft -b mydb > db.tar
4) 把这个数据库(连同BLOB)一起恢复到一个现有的叫 newdb 的数据库:
$ pg_restore -d newdb db.tar
5) 转储所有数据库(pg_dumpall 内部调用 pg_dump):
$ pg_dumpall > db.out
建议:恢复完之后,建议在每个已恢复的对象上运行 ANALYZE。 这样优化器就可以得到有用的统计。 你也可以用 vacuumdb -a -z 清理所有数据库。
3. 数据库物理表空间回收:
1) VACUUM用法(VACUUM 回收已删除元组占据的存储空间):
VACUUM [ FULL | FREEZE ] [ VERBOSE ] [ table ]
VACUUM [ FULL | FREEZE ] [ VERBOSE ] ANALYZE [ table [ (column [, ...] ) ] ]
VACUUM ANALYZE 先执行一个 VACUUM 然后是给每个选定的表执行一个 ANALYZE;
2) Vacuumdb用法(用于整理 PostgreSQL 数据库及查询优化器的内部统计数据,是vacuum命令的一个封装):
vacuumdb [connection-option...] [--full | -f] [--verbose | -v] [--analyze | -z] [--table | -t table [( column [,...] )] ] [dbname]
1) 备份表结构及数据:
create table new_tablename as select * from old_tablename;
或
select * into new_tablename from old_tablename where 1=1;
2) 仅备份表结构(不备份数据):
select * into new_table name from old_tablename where 1<>1;
3) 批量备份表结构及数据【通过如下语句生成备份指令,拷贝出来直接执行即可生成备份表】:
select 'create table back_'||tablename||' as select * from '||tablename||';' from pg_catalog.pg_tables t where t.schemaname='public';
或
select 'select * into back_'||tablename||' from '||tablename||' where 1=1;' from pg_catalog.pg_tables t where t.schemaname='public';
4) 批量备份表结构(不备份数据)【通过如下语句生成备份指令,拷贝出来直接执行即可生成备份表】:
select 'select * into back_'||tablename||' from '||tablename||' where 1<>1;' from pg_catalog.pg_tables t where t.schemaname='public';
注释:此备份目的,仅仅只是为了防止在SP开发中因误操作导致数据错误影响测试或开发;
2. 备份数据库
1) 转储一个数据库:
$ pg_dump mydb > db.out
2) 重载这个数据库:
$ psql -d database -f db.out
3) 输出一个叫 mydb 的包含BLOB 的数据库到一个 tar 文件:
$ pg_dump -Ft -b mydb > db.tar
4) 把这个数据库(连同BLOB)一起恢复到一个现有的叫 newdb 的数据库:
$ pg_restore -d newdb db.tar
5) 转储所有数据库(pg_dumpall 内部调用 pg_dump):
$ pg_dumpall > db.out
建议:恢复完之后,建议在每个已恢复的对象上运行 ANALYZE。 这样优化器就可以得到有用的统计。 你也可以用 vacuumdb -a -z 清理所有数据库。
3. 数据库物理表空间回收:
1) VACUUM用法(VACUUM 回收已删除元组占据的存储空间):
VACUUM [ FULL | FREEZE ] [ VERBOSE ] [ table ]
VACUUM [ FULL | FREEZE ] [ VERBOSE ] ANALYZE [ table [ (column [, ...] ) ] ]
VACUUM ANALYZE 先执行一个 VACUUM 然后是给每个选定的表执行一个 ANALYZE;
2) Vacuumdb用法(用于整理 PostgreSQL 数据库及查询优化器的内部统计数据,是vacuum命令的一个封装):
vacuumdb [connection-option...] [--full | -f] [--verbose | -v] [--analyze | -z] [--table | -t table [( column [,...] )] ] [dbname]
vacuumdb [connection-options...] [--all | -a] [--full | -f] [--verbose | -v] [--analyze | -z]