【笔记】.NET开发条件下采用PostgreSQL+Oracle_fdw 完毕四个数据库之间数据交互操作(一)


前言

   
以往集团支出的地理新闻体系数据都是储存在oracle中,然则在地形图数据的解析和总结中直接存在不小的标题,所以今次大家尝试使用PostgreSQL+PostGIS来缓解这一题材。

   
本篇笔记的目标就是记录在探究这一开支路径时期的“学习的始末”、“遇到的题材息争决进程”以及“简单的施行内容”以备忘。

   
笔记中或者会现出有的术语概念不确切,还请你能耐心指正或者忽视,反正那是为了自身自己能看懂的笔记,你爱看不看。


安装

  1.环境

    Windows7
64位操作系统(公司办事的台式机,探索阶段临时使用,将来或者会转到Windows系统的服务器上去)。

    已设置了Oracle
11g客户端,那里将不在介绍oracle的装置。

  2.步骤

   
基本仍然准寻下一步原则,第二步注意一下语言的取舍。

图片 1

 

    SQL安装完成后自动弹出Stack
Builder引导设置PostGIS等其余伸张。

    我那边只选取了祥和须求的PostGIS版本举行了设置。

    详细可以参考同事整理的设置文档:https://www.jianshu.com/p/3b1a4cd8e72e

三 遇到的率先个难点

 
前一天用着不错的数据库,第二天服务就死活链接不上了,而且在pgAdime里没有报任何错误,就很意外。

 
在品味了修改配置文件、分析服务管理器启动爆发的日记等结尾依然没有收效,索性卸载干净重新安装,居然就好了。。。

 
现在仔细思忖可能是头一天尝试各类配置文件,把方方面面配置搞毁了,还有就是真有一对意想不到的bug。可是那里吸取了一个教训就是,在还尚未做太多工作的前提下,百度往往都未曾显明解决办法的时候,还不如从头来过。

  不过这里仍旧有局地未缓解的小标题,就是postgreSQL的日志文件里的失实记录时不时就有乱码,而且不是具备中文都乱码,而是部分报错的记录才乱码,分外的奇妙。这几个将来要化解一下。


Oracle_fdw的安装配置

  4.1 下载地址

    https://github.com/laurenz/oracle\_fdw/releases/tag/ORACLE\_FDW\_1\_1\_0

图片 2

    选取自己方便的版本下载,然后解压。

  4.2 部署

图片 3

 

                                                            图1

 

图片 4

                                                            图2

   
图1是解压后的文书,将文件夹内文件复制到postgresql安装指定目录中(图2)。

    在postgresql控制巴尔的摩输入

 

create extension oracle_fdw;

 

图片 5

    布署成功!

    那里自己遇见过的难题是总提醒oracle_fdw不是有效的win32主次,因为我的体系是64位系统,PostgreSQL拔取安装的是64位,oracle_fdw自然选取的也是64位,为啥会提醒不是实用的32位程序吗?

   
百度一圈也么有找到和自我一样的难题,只可以协调解决,尝试换32位oracle也未果。

   
不过后来发觉自家的oracle客户端安装的是32位,抱着试试看的神态,只好又卸载重安了两次PostgreSQL,这一次选取的是32位,成功了!

 

五 使用oracle_fdw增添连接oracle数据库

  5.1 创建server   

   
oracle已经应用多年,在此地就不统计oracle的配备方式了。

   
以下代码可以直接在pgAdmin的SQL查询工具里一贯询问。

create server oradb foreign data wrapper oracle_fdw options(dbserver 'orcl');  

 

    oradb是server的名称,’orcl’指向tnsnames.ora中配置的实例名。

 

  5.2
授予用户权限

 

grant usage on foreign server oradb to postgres;

 

   
将刚创造的服务oradb授予权限于postgresql用户postgres。

 

 

 

  5.3
数据库同步

create user mapping for postgres server oradb options(user 'nk_sygis',password 'nk_sygis'); 

   
postgres用户下服务oradb连接oracle数据库。

 

六 Oracle表面表应用

  6.1确立外部表(foreign table)

    接纳oracle中一个有多少的表,先查看结构和数目。

    我习惯用Navicat
Premium直接导出一个表的社团脚本。

   
图片 6

   
依照oracle中的表,在postgresql中开创同结构的foreign
table的sql语句如下:

  

CREATE FOREIGN  TABLE AHW_MAPPOINT_TYPE (
ID integer NOT NULL ,
TYPENAME VARCHAR(50) NULL ,
TABLENAME VARCHAR(50) NULL ,
MAINICON VARCHAR(200) NULL ,
SUBICON VARCHAR(200) NULL ,
SPAREICON VARCHAR(200) NULL ,
ISDEFAULT integer NULL ,
USERNAME VARCHAR(50) NULL ,
PERMISSIONUSERS VARCHAR(1000) NULL ,
DISPLAYFIELD VARCHAR(1000) NULL ,
ALLFIELD VARCHAR(1000) NULL ,
SPARE1 VARCHAR(500) NULL ,
SPARE2 VARCHAR(500) NULL ,
REMARK VARCHAR(255) NULL 
)server oradb options(schema 'AHWD',table 'AHW_MAPPOINT_TYPE');  

 
schema:写oracle中的schema(方式名),table是一道的oracle中的表名称。

 
但是那里要留心pgAdmin数据库的结构中看不到表面表,不用担心,只要能健康查询到就是起家成功了。那点不太对劲儿,以后要找个更好的工具用了。

  6.2查询

select * from AHW_MAPPOINT_TYPE; 

  结果如下图

图片 7

如上部分情节参考引用了别人的文档,原地方为:http://blog.csdn.net/freeland1/article/details/42968763

 

相关文章