逻辑导入导出(pg_dump/pg_restore)用法2-导入到不同的schema或tablespace

文章目录

文档用途

移动数据时,需要更换schema或tablespace

详细信息

逻辑导入导出,导入到不同的schema或tablespace

如果需要将数据导入到不同的schema,tablespace。如何做?

实现方式:将schema数据导出为Fp平面文件,及sql脚本的形式,然后替换sql脚本中的schema和tablespace,再将其导入到数据库中。

步骤如下:

1 使用pg_dump工具实现平面文件格式备份文件,将数据字典和表数据分开导出

如:导出schema pub数据

导出字典信息

sql 复制代码
pg_dump -Fp -s -v -n pub test -f /backup/pub_dic.dmp

导出表数据

sql 复制代码
pg_dump -Fp -a -v -n pub test -f /backup/pub_data.dmp

2 创建新的用户和schema

如:创建新用户和schema test_1209

sql 复制代码
psql -d tpsgdb -U postgres

create role prod_1209 with login password 'test_1209';

create schema if not exists test_1209;

grant all on schema prod_1209 to test_1209;

3 替换备份文件中schema的名字

如 将schema pub替换为schema test_1209

替换字典备份文件

sql 复制代码
sed -i "s/pub/test_1209/g" /backup/pub_dic.dmp

替换数据备份文件

sql 复制代码
sed -i "s/COPY pub/COPY test_1209/g" /backup/pub_data.dmp

4 替换替换字典备份文件中的tablespace参数设置

sql 复制代码
sed -i "s/default_tablespace='postgres'/default_tablespace='test'/g" /backup/pub_dic.dmp

5 导入数据到新schema和tablespace

如:

连接新用户

sql 复制代码
psql -d testt -U test_1209

or

tpsgdb=# \c testt test_1209

导入数据

sql 复制代码
tpsgdb=> \i /backup/pub_dic.dmp

tpsgdb=> \i /backup/pub_data.dmp
相关推荐
IT19953 小时前
Fail2Ban 防护 MySQL 实战|登录失败 3 次,IP 封禁 24 小时
数据库·mysql
夕除3 小时前
redis--IO 多路复用(select + poll)
数据库·sql
lzhdim7 小时前
100条常用SQL语句
数据库·sql·mysql·mybatis
天河归来7 小时前
从原始消息到业务数据:三层数据架构的设计与实践
数据库·数据仓库·架构
数据库小学妹7 小时前
金融数据库成本怎么算?五笔钱加一张TCO表
数据库·金融行业·数据库选型·国产化替代·tco·金融数据库
KaiwuDB7 小时前
KaiwuDB 分布式集群扩缩容,从原理到完整操作踩坑总结
运维·数据库·分布式
auspicious航7 小时前
PostgreSQL的备份与恢复
数据库·postgresql
这个DBA有点耶8 小时前
从 MySQL 到时序数据库:我帮朋友做迁移的完整记录
数据库·架构·dba
泡海椒8 小时前
深度解析JQuick-SQL AST到逻辑计划转换机制|分布式SQL原理
数据库·分布式·sql
心静财富之门8 小时前
Python 数据共享四种方案完整实例(同进程 / JSON / Redis / HTTP)
数据库·python·oracle