前言
最近工作的时候需要用数据库a中的表a1更新插入数据库B的b2表,由于所有的数据库都是postgres数据库,所以想到了postgres_fdw插件。
准备工作
首先要保证两个数据库之间的网络是开放的
数据库的名称是AA ip 10.10.2.100(虚构)端口5432用户名后缀
数据库b名称bb IP 100.20.0.120(虚构)端口6688用户名后缀
首先,使用fdw在两个数据库之间创建连接
1.1安装postgres_fdw插件
1创建扩展名“postgres _ fdw”;
1.2创建外部连接
无论是在A数据库中创建B数据库的连接,还是在B数据库中创建A数据库的连接,本质上都是一样的,为了打开两个数据库,实现数据互操作
1.2.1在数据库a中创建数据库b的连接。
-创建外部服务器
-括号中的三个参数是数据库b的ip、端口和数据库名称。
CREATE SERVER lianjiebb FOReign DATA WRAPPER postgres _ fdw OPTIONS(主机' 100.20.0.120 ',端口' 6688 ',dbname ' BB ');
-创建唐山企业官网用户地图
-括号中的两个参数是数据库b的用户名和密码。
为postgres服务器连洁bb选项创建用户映射(用户“postgres”,密码“数据库密码”);
1.2.2在数据库b中创建数据库a的连接。
-创建外部服务器
-括号中的三个参数是数据库a的ip、端口和数据库名称
CREATE SERVER LianjiAa FOREDIAN DATA WRAPPER postgres _ fdw OPTIONS(主机' 10.10.2.100 ',端口' 5432 ',数据库名' AA ');
-创建用户映射
-括号中的两个参数是数据库a的用户名和密码。
为postgres服务器连洁aa选项创建用户映射(用户“postgres”,密码“数据库密码”);
1.2.3查询外部链接
1从pg_foreign_server选择*
1.3创建外部表
在数据库中创建b1表的外部链接
创建外部表tb_fdw_b1
(
collect_time时间戳(6),
id varchar(36),
列名1数字(12,2),
列名2 int4,
列名3时间戳(6)
)-与b1相同的表结构
服务器链接-您创建的外部链接的名称
选项(table_name '时序库的表名');
检查外部表是否有数字,如果有,表示ok
1从tb_fdw_b1中选择*
在数据库b上创建a1表的外部链接也是如此。
第二,插入数据
2.1将表a1的数据插入外部表tb_fdw_b1
因为两个表具有相同的表结构,所以可以直接插入
1从a1插入到tb_fdw_b1 SELECT *中;
因为外部表实时改变数据库A中外部表tb_fdw_b1的数据,所以数据库B中b1表的数据也随之改变,实现了我们最初的目标