Postgresql 9.3 以上垮库表同步
postgres_fdw 的使用postgres_fdw模块
此前名为pgsql_fdw,pgsql_fdw未整合到contrib中,使用方法如下.,请移步到专业大牛的链接查看: postgres_fdw 使用举例说明:
1. 远程执行代码-- 创建一个枚举类型
CREATE TYPE db_enum AS ENUM ('postgres','sqlserver','mysql');
-- 查看枚举类型的oid
select oid from pg_type where typname='db_enum';
-- 创建一个架构HMADB
CREATE SCHEMA HMADB;
-- 创建表test1
CREATE TABLE HMADB.test1 ( id int NOT NULL,name text,create_time timestamptz,remark varchar(10),chart_type char(10),enum_type db_enum,CONSTRAINT t1_pkey PRIMARY KEY (c1) );
-- 创建表test2
CREATE TABLE HMADB.test2 ( id int NOT NULL,CONSTRAINT t2_pkey PRIMARY KEY (c1) );
-- 插入数据
INSERT INTO HMADB.test1 SELECT id,to_char(id,'FM00000'),'1970-01-01'::timestamptz + ((id % 100) || ' days')::interval,id % 10,'postgres'::db_enum FROM generate_series(1,1000) id;
INSERT INTO HMADB.test2 SELECT id,'cwm' || to_char(id,'FM000') FROM generate_series(1,100) id;
-- 分析 : ANALYZE HMADB.test1;
ANALYZE HMADB.test2;
2. 本地执行代码-- 安装 postgres_fdw 插件
CREATE EXTENSION postgres_fdw;
-- 创建远程服务
CREATE SERVER remote_server FOREIGN DATA WRAPPER postgres_fdw;
-- 查看远程服务
select * from pg_foreign_server ;
-- 修改远程服务
alter server remote_server options ( add hostaddr '192.168.10.12',add port '5432',add dbname 'db2');
-- SERVER赋权 :
grant usage on foreign server remote_server to amdin;
-- 查看远程服务
select * from pg_foreign_server ;
-- 在本地数据库中创建user mapping :
CREATE USER MAPPING FOR amdin server remote_server options (user 'postgres',password 'xxxx');
-- 同样创建枚举
CREATE TYPE db_enum AS ENUM ('postgres','mysql');
-- 查看枚举类型的oid
select oid from pg_type where typname='user_enum';
-- 创建外部表lodtest1
CREATE FOREIGN TABLE lodtest1( id int NOT NULL,) SERVER remote_server options (schema_name 'hmadb',table_name 'test1');
-- 查看外部表
select * from lodtest1limit 1;
-- 创建外部表lodtest1
CREATE FOREIGN TABLE lodtest2(id int not null,name text) SERVER remote_server options(schema_name 'hmadb',table_name 'test2');
-- 查看外部表
select * from lodtest2 limit 1;
总结基本可以满足postgersql 垮库表同步数据了 – 常用语句 -- # 清理
drop user mapping for admin server server_remote ;
drop server server_remote1;
drop extension postgres_fdw ;
drop foreign table test1;
-- 相关系统表
select * from pg_extension;
select * from pg_foreign_data_wrapper;
select * from pg_foreign_server;
select * from pg_foreign_table;
-- 查看有有架构
SELECT nspname FROM pg_namespace;
drop SCHEMA hmauser;
select * from information_schema.schemata;
select * from information_schema.tables where table_schema='public';
献上自己参考的原文链接,感谢前辈们的辛苦付出,有你们领路前行,是我们源源不断的动力.http://blog.163.com/digoal@126/blog/static/163877040201312544919858/ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |