PG数据库急着上线前,快速上线后,计划时间备份清理历史数据

工具:
1.PG数据库
2.navicat软件
思路:
1.确认清理的表名
2.备份表结构和索引
3.查询所有表名和索引名,重命名表名,索引名
ALTER TABLE t_xxx RENAME TO t_xxx2;
ALTER INDEX pk_t_xxx RENAME TO pk_t_xxx2;
4.建新表和新索引
5.备份数据
6.清理数据
 
具体操作:
-- 1.确认清理的表名,这一步主要是确认要清理的表名,如果已明确知道需要清理的是哪些表,则可以跳过这一步
select *
from pg_tables
where tablename like 'xxx_%'
and tablename not in (
-- 排除掉不需要清理的表名
);
 
-- 2.备份表结构和索引
-- 1)打开数据库zljcjg--public,右击public,选择“转储SQL文件”--“仅结构”,输入文件名(如:zl.sql),保存,开始备份表结构和索引
-- 2)打开zl.sql文件, 将无关的表名和备注,索引删除
 
-- 3.查询所有表名和索引名,重命名表名,索引名
-- 查询所有表名
select *
from pg_tables
where tablename like 'xxx_%'
and tablename not in (
-- 排除掉不需要清理的表名
);
 
-- 重命名表名
-- 复制列名tablename的值,用以下语句。重命名表名
ALTER TABLE t_xxx RENAME TO t_xxx2;
 
 
-- 查询所有索引名
select *
from pg_indexes
where tablename like 'xxx_%';
 
-- 重命名索引名
-- 复制列名indexname的值,用以下语句。重命名索引名
ALTER INDEX pk_t_xxx RENAME TO pk_t_xxx2;
 
 
-- 4.建新表和新索引
-- 1)打开数据库zljcjg--public,右击public,选择“运行SQL文件”,选择文件(如:zl.sql),开始,开始创建新表和新索引
------------------------- 至此,系统可以投入正式使用,剩下备份可以计划时间实施---------------------------------------------
 
-- 5.备份数据(这个耗费的时间比较长,耗费的时间和数据量成正比)
-- 1)打开数据库zljcjg--public--表,右击表,选择“导出向导”--“SQL脚本文件(*.sql)”,选择相应的表名,开始备份表数据
 
-- 6.清理数据
-- 查询所有表名
select *
from pg_tables
where tablename like 'xxx_%'
and tablename not in (
-- 排除掉不需要清理的表名
);
 
-- 删除表
-- 复制列名tablename的值,用以下语句。删除表,删除前先确认是否已备份完毕
truncate table t_xxx2;
drop table t_xxx2;

原文地址:https://www.cnblogs.com/ddbear/p/14888772.html