一 环境
os: win764位
postgresql9.3 64位
二 oracle_fdw安装部署
2.1 下载地址
选择自己合适的版本下载,然后解压。
2.2 部署
左图是解压后的文件,将文件夹内文件复制到postgresql安装指定目录中。
在postgresql控制台中输入
create extension oracle_fdw;
部署成功!
三 postgresql应用配置
3.1 创建server
打开$ORACLE_HOME/network/admin/tnsnames.ora,内容如下:
orcl=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
(CONNECT_DATA =
(sid = orcl)
(SERVER = DEDICATED)
)
)
先用oracle的客户端如pl/sql登陆下,登陆正常进行下一步。
create server oradb foreign data wrapper oracle_fdw options(dbserver 'orcl');
oradb是server的名称,'orcl'指向tnsnames.ora中配置的实例名。
3.2 授予用户权限
grant usage on foreign server oradb to postgres;
将刚创建的服务oradb授予权限于postgresql用户postgres。
3.3 数据库同步
create user mapping for postgres server oradb options(user 'nk_sygis',password 'nk_sygis');
postgres用户下服务oradb连接oracle数据库。
四 应用
4.1 建立foreign table
选择oracle中一个有数据的表,先查看结构和数据。
根据oracle中的表,在postgresql中创建同结构的foreign table的sql语句如下:
CREATE FOREIGN TABLE T_NKGIS_ROAD_foreign
(
dl_mc varchar(200),
dl_dm varchar(100)
) server oradb options(schema 'NK_SYGIS',table 'T_NKGIS_ROAD');
4.2 查询
在postgresql的sql中执行以下语句:
select * from T_NKGIS_ROAD_foreign;
结果如下图
很清楚,和我们oracle中看到的一模一样。
访问的oracle表,可以postgresql中的表进行join,order by。。。甚至增删改查。
这样,使用postgis和oracle的业务关联,完美的gis解决方案。
五 扩展
访问的oracle表,可以postgresql中的表进行join,order by。。。甚至增删改查。
这样,使用postgis和oracle的业务关联,完美的gis解决方案。