sql server 与oracle数据互导的一种思路--sql server链接服务器

思路:通过在sql server数据库中添加链接服务器,可以远程查询oracle数据库的表
环境准备,安装sql server数据库,并安装好oracle驱动,在配置好tnsname文件中配置好oracle连接,本人用的sql server2008 R2,oracle11g测试,提供程序采用的OraOLEDB.Oracle(网上很多文章说这个不能成功,要选择Microsoft OLE DB Privider for oracle,可我选择这个配置成功,估计是不能同时存在两个,如果有两个,sql server默认用微软的)

tnsmae配置如下:

orcl11 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = wilsonpc3 )(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl11 )
)
)

  

首先确保sql server 所在机器通过sqlplus能够正常连接oracle

在sql server链接服务器中添加oracle的访问,命名为Oracl

在SQL Server Management Studio中远程查询oracle数据库

select * from openquery(Oracl,‘select EMPNO
,ENAME
,JOB
,MGR
,HIREDATE
,SAL
,COMM
,DEPTNO from emp‘) a
inner join EMP b
on a.empno=b.EMPNO
and b.EMPNO=7369

  

openquery 结果相当于返回的是一个远程的表对象,可以当做表去做sql语句的链接操作,也可对oracle数据进行更新删除操作 ,例如下面的代码是对远程的oralcle数据库进行插入操作 :

insert into openquery(Oracl,‘select EMPNO
,ENAME
,JOB
,MGR
,HIREDATE
,SAL
,COMM
,DEPTNO from emp‘)
select [EMPNO]+1000
,[ENAME]
,[JOB]
,[MGR]
,[HIREDATE]
,[SAL]
,[COMM]
,[DEPTNO]
from emp

  

删除操作:

delete from openquery(Oracl,‘select EMPNO
,ENAME
,JOB
,MGR
,HIREDATE
,SAL
,COMM
,DEPTNO from emp‘)
where empno=‘7369‘

  有了以上的操作方法,sql server与oracle数据互导有了一个基本的思路。

时间: 2024-10-15 07:44:15

sql server 与oracle数据互导的一种思路--sql server链接服务器的相关文章

详解Oracle数据货场中三种优化:分区、维度和物化视图

转 xiewmang 新浪博客 本文主要介绍了Oracle数据货场中的三种优化:对分区的优化.维度优化和物化视图的优化,并给出了详细的优化代码,希望对您有所帮助. 我们在做数据库的项目时,对数据货场的优化,大约的原理只有两个:一是数据分块储藏,便于数据的转储和管教:二是其中处理,长进数据供给的速度.本文主要介绍了Oracle数据货场中的三种优化:对分区的优化.维度优化和物化视图的优化,基上面两个大约的原理,借助于数据货场的观念,罗列数据库的优化措施:1.分区在数据货场中,事实表,索引表,维度表分

SQL Server的链接服务器(MySQL、Oracle、Ms_sql、Access、SYBASE)

原文:SQL Server的链接服务器(MySQL.Oracle.Ms_sql.Access.SYBASE) 一.使用 Microsoft OLE DB Provider For ODBC 链接MySQL 安装MySQL的ODBC驱动MyODBC 1.为MySQL建立一个ODBC系统数据源,例如:选择数据库为test ,数据源名称为myDSN 2.建立链接数据库 EXEC sp_addlinkedserver @server = 'MySQLTest', @srvproduct='MySQL',

用pl/sql实现oracle数据的导出和导入

一.PL/SQL工具实现oracle数据导出 1. 数据对象导出 工具->导出用户对象,弹出如下界面: 选择用户,选择导出文件的路径,命名导出文件名称(.sql),然后点击导出即可. 注意:此方法只能导出数据对象,不能导出表中存储的数据: 2. 表数据导出 工具->导出表,弹出如下界面: 方法一(oracle导出方式):可执行文件 exp.exe 选择导出文件的路径,命名导出文件名称(.dmp),然后点击导出即可. 方法二(SQL插入方式)如下图: 选择导出文件的路径,命名导出文件名称(.sq

最简单删除SQL Server中所有数据的方法

原文:最简单删除SQL Server中所有数据的方法  最简单删除SQL Server中所有数据的方法 编写人:CC阿爸 2014-3-14 其实删除数据库中数据的方法并不复杂,为什么我还要多此一举呢,一是我这里介绍的是删除数据库的所有数据,因为数据之间可能形成相互约束关系,删除操作可能陷入死循环,二是这里使用了微软未正式公开的sp_MSForEachTable存储过程. 也许很多读者朋友都经历过这样的事情:要在开发数据库基础上清理一个空库,但由于对数据库结构缺乏整体了解,在删除一个表的记录时,

SQL Server 通过链接服务器访问Oracle

数据库:SqlServer2005 .Oracle 11gR2 系统环境:windows Server 2008R2 32位. 最近在做项目时,需要通过sql的链接服务器访问Oracle.以前弄过sql访问sql,感觉挺简单的,以为访问Oracle也差不多,实际做过后才发现存在很多差距. 步骤: 1.SQL Server端Windows需装对应版本的Oracle客户端.(我安装Oracle9i客户端后通过PL/SQL访问Oracle11gR2,没有问题,但是通过链接服务器访问就无法查询) 2.O

Sql Server中的数据类型和Mysql中的数据类型的对应关系(转)

Sql Server中的数据类型和Mysql中的数据类型的对应关系(转):https://blog.csdn.net/lilong329329/article/details/78899477 一.SQL SERVER与MySQL数据存储的差异 1.SQL SERVER中的datetime,保留到微秒(秒后小数点3位),而mysql仅保留到秒,转换后是否会影响业务,如果影响,需要新增一个字段专门来存储微秒或者毫秒,虽然mysql中没有时间数据类型的精度到达微秒或者毫秒,但是mysql提供对微秒的

sql server中分布式查询随笔(链接服务器(sp_addlinkedserver)和远程登录映射(sp_addlinkedsrvlogin)使用小总结)

由于业务逻辑的多样性,经常得在sql server中查询不同数据库中数据,这就产生了分布式查询的需求 现我将开发中遇到的几种查询总结如下: 1.access版本 --建立连接服务器 EXEC sp_addlinkedserver --要创建的链接服务器名称  'ai',             --产品名称               'access',     --OLE DB 字符 'Microsoft.Jet.OLEDB.4.0',  --数据源 --格式: -- 盘符:\路径\文件名 -

SQL Server的链接服务器技术

一.使用 Microsoft OLE DB Provider For ODBC 链接MySQL 安装MySQL的ODBC驱动MyODBC 1.为MySQL建立一个ODBC系统数据源,例如:选择数据库为test ,数据源名称为 myDSN 2.建立链接数据库EXEC sp_addlinkedserver @server = 'MySQLTest', @srvproduct='MySQL', @provider = 'MSDASQL', @datasrc = 'myDSN' GO EXEC sp_a

oracle(数据备份)

1 --oracle数据备份(三种方法) 2 --1.逻辑备份与恢复:用Oracle提供的工具,导入/导出(exp,imp),数据 3 --泵导入/导出(impdp,expdp),装入器(SQL*Loader) 4 --2.脱机备份与恢复:指在关闭数据库的情况下对数据库文件的物理备份与 5 --恢复,是最简单,最直接的方法,也称为冷备份与恢复 6 --3.联机备份与恢复:指在数据库处于打开的状态下(归档模式)对数据库进 7 --行的备份与恢复,只有能联机备份与恢复的数据库才能实惠不停机地使用.