• 售前

  • 售后

热门帖子
入门百科

Postgresql 跨库同步表及postgres_fdw的用法说明

[复制链接]
千山落月坝 显示全部楼层 发表于 2021-10-26 14:01:20 |阅读模式 打印 上一主题 下一主题
postgres_fdw模块
  1. PostgreSQL 9.3 add postgres_fdw extension for accessing remote tables
复制代码
PostgreSQL 9.3新增了一个postgres_fdw模块, 已经整合在源码包中. 用于创建postgres外部表.
注:db_des为目标库,developer_month_orders_data为表名。意思就是从查询库a中建立同名FOREIGN关联表,
可以查询目标库中的数据。以下下令在需要建立的关联库中执行。
目标库中的表必须存在,也就是先建立好,否则从a库,查询会报找不到表错误
阿里云RDS,数据库:PostgreSQL 9.4,跨实例数据库不支持postgres_fdw建立外部表,坑啊!
阿里云技术回复RDS需要10.0版本的 postgresql才支持跨实例。否则只能同一个实例下的不同数据库之间的外部表。
  1. -- 安装 postgres_fdw 插件
  2. CREATE EXTENSION postgres_fdw;
  3. -- 创建远程服务
  4. CREATE SERVER remote_server FOREIGN DATA WRAPPER postgres_fdw;
  5. -- 查看远程服务
  6. select * from pg_foreign_server ;
  7. -- 修改远程服务
  8. alter server remote_server options (add hostaddr '11.216.10.215',
  9.        add port '5432', add dbname 'db_des');
  10. -- SERVER赋权
  11. grant usage on foreign server remote_server to postgres;
  12. -- 在本地数据库中创建user mapping
  13. CREATE USER MAPPING FOR postgres server remote_server options (user 'postgres', password 'xxxxx');
  14. -- 同样创建枚举
  15. CREATE TYPE db_enum AS ENUM ('postgres', 'sqlserver', 'mysql');
  16. -- 查看枚举类型的oid
  17. select oid from pg_type where typname='db_enum';
  18. -- 创建外部表developer_month_orders_data
  19. CREATE FOREIGN TABLE developer_month_orders_data(
  20. id integer not null,
  21. developer_user_id integer,
  22. package_id integer,
  23. order_month date,
  24. create_datetime timestamp
  25. ) SERVER remote_server options (schema_name 'public',table_name 'developer_month_orders_data');
  26. -- 查看外部表
  27. select * from developer_month_orders_data;
复制代码
ddl维护操纵:
  1. drop user mapping for postgres server server_remote ;
  2. drop server server_remote;
  3. drop extension postgres_fdw ;
  4. drop foreign table test1;
复制代码
补充:postgresql postgres_fdw 跨库查询
1 安装扩展
  1. create extension postgres_fdw;
复制代码
2 本地创建server并检察 该server作用是在本地配置一个毗连长途的信息,下面的配置是要毗连到长途DB名称是postgres数据库
  1. create server server_remote_rudy_01 foreign data wrapper postgres_fdw options(host ‘192.168.11.44',port ‘5432',dbname ‘vsphere_info');
复制代码
查询:
  1. select * from pg_foreign_server ;**
复制代码
3 创建用户匹配信息并检察,在本地
for后面的postgres是本地登录执行的用户名,option里存储的是长途的用户密码
  1. create user mapping for postgres server server_remote_rudy_01 options(user ‘vsphere',password ‘viadmin');
复制代码
4 本地创建外部表,指定server
  1. CREATE FOREIGN TABLE v1_cost(sample_time TIMESTAMP,datacenter_id int4,host_id int4 ,cost NUMERIC) server server_remote_rudy_01 options (schema_name ‘public',table_name ‘vi_cost');
复制代码
5 –导入指定的表,也可以不导入指定的表,也可以导入整个schema下面的表(无关紧急的一步)
  1. IMPORT FOREIGN SCHEMA public FROM SERVER server_remote_rudy_01 INTO public;
  2. IMPORT FOREIGN SCHEMA public limit to(t1) FROM SERVER server_remote_rudy_01 INTO public;
复制代码
以上为个人履历,盼望能给各人一个参考,也盼望各人多多支持脚本之家。如有错误或未考虑完全的地方,望不吝见教。

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作