龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 数据库类 > Oracle 技术 >

Oracle与SQL Server之间的数据迁移(1)(2)

时间:2011-04-12 23:18来源:未知 作者:admin 点击:
分享到:
二、SQL访问ORACLE的方法 1 通过行集函数OPENDATASOURCE OPENDATASOURCE ( provider_name, init_string )SELECT *FROM OPENDATASOURCE( 'MSDAORA', 'Data Source=xzh.oracle;User ID=POS;Password=POS'

二、SQL访问ORACLE的方法

1 通过行集函数OPENDATASOURCE

OPENDATASOURCE ( provider_name, init_string )

SELECT *

FROM OPENDATASOURCE(

 'MSDAORA',

 'Data Source=xzh.oracle;User ID=POS;Password=POS')..POS.A0325

MSDAORA是OLEDB FOR ORACLE的驱动,初始化字符串指定本地服务名、用户名、口令。然后引用表中数据时要以服务器..用户名.表名。注意一定是四部分组成,用户名与表名一定要大写。

SELECT * INTO PUBS.DBO.A0325 FROM 

OPENDATASOURCE(

 'MSDAORA',

 'Data Source=xzh.oracle;User ID=POS;Password=POS' )..POS.A0325

将ORACLE中POS模式的A0325导入SQL的PUBS数据库。

2 通过SQL的链接服务器引用ORACLE的数据

查看已经存在的链接服务器

SELECT*FROM SYSSERVERS

添加链接服务器到SQL:

EXEC SP_ADDLINKEDSERVER

  @server = 'ORCL',ORCL是SQL中链接服务器名称

  @srvproduct = 'Oracle',  Oracle固定的

  @provider = 'MSDAORA',MSDAORA  固定的

  @datasrc = 'xzh.oracle' DataSrc 本地服务名

  EXEC SP_DROPSERVER ‘ORCL’删除链接服务器

在这里声明一下,如果现在就访问ORACLE肯定不能,因为没有提供登录ORACLE的用户名/口令EXEC SP_ADDLINKEDSRVLOGIN 'ORCL', false, 'sa', 'POS', 'POS'Sa是SQL本地登录帐号,POS/POS是ORACLE的登录帐号,但这句话对我们要达到的目的没有帮助。

SELECT * FROM ORCL..POS.A0325

还是四部分组成,注意事项同上,为什么不行呢,本人一直在寻找解决办法,最后发现通过SQL语句没法解决,只有打开SQL的企业管理器。

SELECT * FROM ORCL..POS.A0325  --这次终于OK。

SELECT * FROM OPENQUERY(ORCL, 'SELECT * FROM POS.A0325')

3 使用SQL的OPENROWSET函数

 SELECT a.*

FROM OPENROWSET('MSDAORA',

 'xzh.oracle';'POS';'POS', POS.A0325) AS a ORDER BY a.ID

有些地方要用别名才能引用,请大家注意。

4使用ODBC的方式

SELECT A.*

FROM OPENROWSET('MSDASQL','ORCL_ODBC';'POS';'POS',

  POS.A0325) AS A

ORDER BY A.ID

ORCL_ODBC是ORACLE的ODBC数据源,创建ODBC不用我说吧,以上所有代码在SQL QUERY ANALYZE 中通过。

三 总结

关于SQL访问ORACLE有四种方式,其中通过ODBC与链接服务器的方式做起来难度较大,对手新手会麻烦一些,使用OLE DB FOR ORACL驱动时,有OPENDATASOURCE与OPENROWSET函数可以使用,都很方便,笔记喜欢使用后者,交待一下,在数据存取方面,这四种方面效率相当。

  1. 浅谈存取Oracle当中扫描数据的方法
  2. Oracle设置系统参数进行性能优化
  3. Oracle数据库维护中的前瞻性
精彩图集

赞助商链接