通过创建SQLServer 2005到 Oracle10g 的链接服务器实现异构数据库数据转换方案


1、新建链接服务器

在图1中选中“链接服务器”,右键选择“新建链接服务器”,如图2,配置相关参数。

2、配置相关参数

在“常规”选项中,填写“链接服务器名称”,访问接口选中

“ Microsoft OLE DB Provider for Oracle”项。其中产品名称、数据源、访问接口字符串请填写配置的Oracle客户端在本地配置的net服务名。如图3所示。

在“安全性”项中,选中使用此安全上下文建立连接,填写远程登录用户和密码,即登录远程Oracle服务器的用户和密码。如图4所示。

3、异构数据库访问语句格式

比如我们建立了链接服务器ORADBCONN,而Oracle中在HRSOFT用户下面建立了表WEBUSER,那么我们的SQL语句就是:

--清空Oracle表中的数据

DELETE FROM ORADBCONN..HRSOFT.WEBUSER

--将SQLServer中的数据写到Oracle中

INSERT into ORADBCONN.. HRSOFT. WEBUSER

SELECT * FROM WEBUSER

如果报告成功,那么我们的数据就已经写入到Oracle中了。

用SELECT *  FROM ORADBCONN..HRSOFT.WEBUSER

查看Oracle数据库中是否已经有数据了。

4、链接服务器应用

A、查询Oracle数据表方式一(这种方式,当Oracle与SQLServer的数据类型不一致时经常报错,且速度稍慢):

select * from [LINK2ORACLE]..[ORACLE_USER_NAME].TABLE_NAME;

  我在执行该语句经常报类似错误信息:链接服务器 "LINK2ORACLE" 的 OLE DB 访问接口 "MSDAORA" 为列提供的元数据不一致。对象 ""CMCC"."OS2_GIS_CELL"" 的列 "ISOPENED" (编译时序号为 20)在编译时有 130 的 "DBTYPE",但在运行时有 5。

  B、查询Oracle数据表方式二(经试验,这种方式使用起来很顺畅,不报错,且速度几乎和在Oralce中一样快):

  select * from openquery(LINK2ORACLE,'select * from OracleUserName.TableName')

  您可以把openquery()当成表来使用。

  C、举个例子(将Oralce用户HRSOFT下的用户表WEBUSER导入到SQLServer2005数据库中):

  select * into OS_GIS_WEBUSER from openquery(LINK2ORACLE,'select * from HRSOFT. WEBUSER)

  D、更便捷的方式:通过创建同义词进行便捷查询:

  CREATE SYNONYM OS_GIS_CELL FOR [ORACLELK]..[CMCC].OS_GIS_CELL;

  select * from os_gis_cell;

  select * from os_gis_cell a where a.CellName is null;

注意:涉及 Oracle 部分的 SQL 语句,尤其是 [ORACLELINK]..[ORACLE_USER_NAME].TABLE_NAME 一定要大写,否则会报类似错误:

消息 7314,级别 16,状态 1,第 1 行

链接服务器 "ORACLELK" 的 OLE DB 访问接口 "MSDAORA" 不包含表 ""CMCC"."OS2_gis_CELL""。该表不存在,或者当前用户没有访问该表的权限。

配置數據源:

工程INPLAN:

(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.2.6)(PORT=1521)))(CONNECT_DATA=(SID=sa)(SERVER=DEDICATED)))

ERP:

(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL = TCP)(HOST = 192.168.3.25)(PORT = 1528)))(CONNECT_DATA =(SID= TJTEST)))

(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL = TCP)(HOST = 192.168.3.25)(PORT = 1528)))(CONNECT_DATA =(SID= TJTEST)))

新建作業里的代碼:

delete from XBLD_Information

INSERT INTO XBLD_Information(job_name, num_layers, JB_PP1, JB_PC1, JB_PP2, JB_PC2, JB_PP3, JB_PC3, PP_PP1, PP_PC1, PP_PP2, PP_PC2, PP_PP3, PP_PC3, PP_PP4,PP_PC4,BM)

select * from openquery(INPLAN,'

select mjs15.job_name, mjs15.num_layers,mjs1.MM1 JB_PP1,mjs1.MC1 JB_PC1,mjs2.MM2 JB_PP2,mjs2.MC2 JB_PC2,mjs3.MM3 JB_PP3,mjs3.MC3 JB_PC3,mjs11.MM1 PP_PP1,mjs11.MC1 PP_PC1,mjs12.MM2 PP_PP2,mjs12.MC2 PP_PC2,mjs13.MM3 PP_PP3,mjs13.MC3 PP_PC3,mjs14.MM4 PP_PP4,mjs14.MC4 PP_PC4,Substr(mjs15.job_name,5,2) BM

from

(select mjl.job_name,

mjl.num_pcbs,

mjl.num_arrays,

mjl.num_panles_,

mjl.num_layers,

substr(mjl.op_size_y_string_,instr(mjl.op_size_y_string_,''='')+1,length(mjl.op_size_y_string_)-instr(mjl.op_size_y_string_,''='')+1) y_size, --祇?へ?糴

substr(mjl.op_size_x_string_,instr(mjl.op_size_x_string_,''='')+1,length(mjl.op_size_x_string_)-instr(mjl.op_size_x_string_,''='')+1) x_size --祇?へ??

from tj.my_job_list mjl

) mjs15,

(select *

from

(select mjs.job_name,

decode(DENSE_RANK() over( partition by job_name order by material_name,material_count),1,material_name) MM1,

decode(DENSE_RANK() over( partition by job_name order by material_name,material_count),1,material_count) MC1

from tj.my_job_stackup_material_count mjs

where mjs.type_T=''Core''

)where MM1 is not null

) mjs1,

(select *

from

(select mjs.job_name,

decode(DENSE_RANK() over( partition by job_name order by material_name,material_count),2,material_name) MM2,

decode(DENSE_RANK() over( partition by job_name order by material_name,material_count),2,material_count)MC2

from tj.my_job_stackup_material_count mjs

where mjs.type_T=''Core''

) where MM2 is not null

) mjs2,

(select *

from

(select mjs.job_name,

decode(DENSE_RANK() over( partition by job_name order by material_name,material_count),3,material_name) MM3,

decode(DENSE_RANK() over( partition by job_name order by material_name,material_count),3,material_count)MC3

from tj.my_job_stackup_material_count mjs

where mjs.type_T=''Core''

) where MM3 is not null

) mjs3,

(select *

from

( select mjs.job_name,

decode(DENSE_RANK() over( partition by job_name order by material_name,material_count),1,material_name) MM1,

decode(DENSE_RANK() over( partition by job_name order by material_name,material_count),1,material_count) MC1

from tj.my_job_stackup_material_count mjs

where mjs.type_T=''Prepreg''

)where MM1 is not null

) mjs11,

(select *

from (

select mjs.job_name,

decode(DENSE_RANK() over( partition by job_name order by material_name,material_count),2,material_name) MM2,

decode(DENSE_RANK() over( partition by job_name order by material_name,material_count),2,material_count)MC2

from tj.my_job_stackup_material_count mjs

where mjs.type_T=''Prepreg''

)where MM2 is not null

) mjs12,

(select *

from

( select mjs.job_name,

decode(DENSE_RANK() over( partition by job_name order by material_name,material_count),3,material_name) MM3,

decode(DENSE_RANK() over( partition by job_name order by material_name,material_count),3,material_count)MC3

from tj.my_job_stackup_material_count mjs

where mjs.type_T=''Prepreg''

)

where MM3 is not null

) mjs13,

(select distinct *

from

( select mjs.job_name,

decode(DENSE_RANK() over( partition by job_name order by material_name,material_count),4,material_name) MM4,

decode(DENSE_RANK() over( partition by job_name order by material_name,material_count),4,material_count)MC4

from tj.my_job_stackup_material_count mjs

where mjs.type_T=''Prepreg''

) where MM4 is not null

) mjs14

where mjs15.job_name=mjs1.job_name(+)

and mjs15.job_name=mjs2.job_name(+)

and mjs15.job_name=mjs3.job_name(+)

and mjs15.job_name=mjs11.job_name(+)

and mjs15.job_name=mjs12.job_name(+)

and mjs15.job_name=mjs13.job_name(+)

and mjs15.job_name=mjs14.job_name(+)

')

UPDATE XBLD_Information SET BM=b.Describe from XBLD_Information a, XBLD_BM b where a.bm=b.id



相关阅读:
CSS和“★”字符制做的中国国旗实现代码
批量替换 MySQL 指定字段中的字符串
数据库管理员必须了解的MySQL企业监控器
php 文本文件的读取效率
关于prototype.js的一些技术说明
mysql中索引使用不当速度比没加索引还慢的测试
javascript Ajax 类实现代码
fedora
用vbs实现自动检查代理是否可用,并自动设置IE代理的脚本
检测你的SQL Server是否有特洛伊木马
SQL Server 2008的管理能力
Linux文件夹大小查看办法
Node你听说吗?Node的身世和所适用的场景
MySQL:改善数据装载效率的策略分析
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 遵义-茄子溪 诸城-岳阳 潍坊-威海 宣威-莱西 乌鲁木齐南-伊宁 郑州-霸州 旗下营-堡子湾 怀化-荆门 绥化-八面通 信阳-衡水 八仙筒-小河沿 阳澄湖-安亭北 梁山-胶州 张桥-三原 来宾北-宾阳 融安-鹿寨 广州南-中山北 娄底南-上饶 常州北-潍坊 贵定北-贵阳北 咸宁-梁平 龙江-太平川 杭州-迁安 滦县-滕州 南京南-杭州东 玉林-吉首 定州-临颍 沟帮子-公主岭 团结-松树林 渭南北-常州北 广州东-河源 牙克石-克一河 禄丰南-兰州 新松浦-南岔 祁东-南宁东 开原西-吉林 宜昌东-新乡东 鹰潭-上海南 包头北-白云鄂博 衡水-吕梁 沧州-盘锦 新乡东-昆明南 翠峰-小扬气 东莞东-藁城 兴义-遂溪 随州-银川 桥北-姚千户屯 交城-呼和浩特东 阿城-大石桥 威海-荣成 肃宁-北京西 祁东-南昌西 张家界-株洲 衡阳-苏州 大东-仙人桥 贵阳-东乡 天津-西乡 三堂集-无锡 湖州-滦河 任家店-刀尔登 张掖西-乌鲁木齐 大石桥-东丰 苏州-扶余 无锡新区-宁波 巢湖-襄阳东 炎陵-安仁 三明北-鄂州 青山-林口 民权北-邵阳北 厦门-深圳坪山 下花园-瑞昌 衡水-齐齐哈尔 沈阳北-泰来 张家口南-官厅 鹰潭-宣汉 邵东-北流 新化南-济南西 宜春-横峰 奈曼-白泉 商丘-安阳 现在从泉州坐大巴到三明需多少时间
从河北曲阳到山东曹县怎么坐车
春节期间重庆到江西的火车列车票提前几天售票
温州那有客车汽车直接到达湖北荆州的
从中央财经大学到海淀区永定路51号镂空大厦南楼怎么坐车
保定哪能买到塑料杯封口机,票价多少钱?
南宁到凤凰四月中旬三日游求攻略
泉州到惠安车走的是什么高速
万石山植物园早上几点之前不要门票?
贵州红果到西安的列车火车票
在贵州能不能买到萨莫耶犬?贵阳的宠物市场有么?
从中山南朗莞到东樟木头 在那里坐车,车费多少
你好请问在福建龙岩哪里买到竹鼠的种苗能不能提供技术养
武汉汉口列车火车站去新洲区郝城街华家大湾 怎么做公交车 求解
从焦作青龙峡怎么到焦作市
求 国庆期间成都到重庆2到3日游 有哪些好玩的旅游景点及好吃的推荐 在此先谢过了
深圳到南昌的汽车客车票价多少啊龙岗有汽车客车站可以直接去的么
张店坐车到莱芜大峡谷
顺丰邮递深圳到莆田仙游要多久()
南京哪能买到普洱茶啊? 大概票价多少钱?
温州西山到百里小学坐几号公交车
我想订从厦门到青岛的机票不知道什么时候订机票最便宜和和去
从杭州到兰州做列车火车要提前多久买票?
焦作到开封长途汽车最早的一班几点现在是过年期间 特殊时期 听说早班的可能没有 知道准确时间的再说 谢谢了
宜兴长途客车汽车站的网址
上海虹桥机场22点半左右下飞机,出来后还能坐到哪些公交或其
到襄樊学院图书馆 阅览室 看书要证件吗
有贵阳到吴江的汽车吗
深圳到南康坐车要多少时间
青岛到天津的汽车客车从城阳北站发的都有几点的

Copyright © 2016 phpStudy |