【笔记】.NET开发环境下行使PostgreSQL+Oracle_fdw 实现两独数据库里数据交互操作(一)


前言

   
以往店家开之地理信息体系数据都是储存于oracle中,然而以地形图数据的解析以及计量中直接有未聊之问题,所以今次我们品尝运用PostgreSQL+PostGIS来化解当下同一问题。

   
本篇笔记的目的就是记录在研究这同样开支路径期间的“学习的始末”、“遇到的题目及化解进程”以及“简单的实践内容”以备忘。

   
笔记中可能会见冒出部分术语概念不规范,还请你能够耐心指正或者忽视,反正这是为了我自己会看懂的笔记,你爱看不看。


安装

  1.环境

    Windows7
64号操作系统(公司工作之台式机,探索阶段临时动,以后可能会见变动至Windows系统的服务器上)。

    已安装了Oracle
11g客户端,这里用非在介绍oracle的设置。

  2.步骤

   
基本要准寻下一致步原则,第二步注意一下言语的精选。

Oracle 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

Oracle 2

    选择自己合适的版本下载,然后解压。

  4.2 部署

Oracle 3

 

                                                            图1

 

Oracle 4

                                                            图2

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

    在postgresql控制台中输入

 

create extension oracle_fdw;

 

Oracle 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直接导出一个阐明的结构脚本。

   
Oracle 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; 

  结果使下图

Oracle 7

以上部分内容参考引用了他人之Oracle文档,原地方为:http://blog.csdn.net/freeland1/article/details/42968763

 

相关文章