orcale和mysql跨库查询_ORACLE跨数据库查询的方法

我有两个数据库

A、B

然后我要将两个数据库的两张表组合作为一张表C显示

判断条件是

A数据库的aa表中字段a和B数据库的bb表中字段b相等

并且A数据库的aa表中字段a或B数据库的bb表中字段b等于某个值

示例:

sql="select b.filetitle as t1 ,a.publishtime as t2 from   opendatasource('sqloledb' ,'data source =192.168.0.2;UID=sa; pwd=123456' ).f_FS_DB_site_yaoban_200702.dbo.content_table b,content_table a where b.filetitle=a.filetitle"

首先创建数据库链接:

CREATE PUBLIC DATABASE LINK 数据链名称 CONNECT TO 登陆用户名 IDENTIFIED BY 密码 USING '(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 对方Oracle服务器的IP地址)(PORT = 端口号))

)

(CONNECT_DATA =

(SERVICE_NAME = 对方Oracle服务器服务名)

)

)'

其中 数据链名称 为添加到本地Oracle数据库控制台(Oracle Enterprise Manager Console)树节点的服务名

要查询对方数据库的表TableName语句如下:

SELECT 字段名 FROM TableName@数据链名称;

由于业务逻辑的多样性

经常得在sql server中查询不同数据库中数据

这就产生了分布式查询的需求

现我将开发中遇到的几种查询总结如下:

1.access版本

--建立连接服务器

EXEC sp_addlinkedserver

--要创建的链接服务器名称

'ai',

--产品名称

'access',

--OLE DB 字符

'Microsoft.Jet.OLEDB.4.0',

--数据源

--格式:

-- 盘符:\路径\文件名

-- \\网络名\共享名\文件名 (网络版本)

'd:\testdb\db.mdb'

GO

--创建链接服务器上远程登录之间的映射

--链接服务器默认设置为用登陆的上下文进行

--现在我们修改为连接链接服务器不需使用任何登录或密码

exec sp_addlinkedsrvlogin 'ai','false'

go

--查询数据

select * from ai...mytable

go

2.excel版本

--建立连接服务器

EXEC sp_addlinkedserver

--要创建的链接服务器名称

'ai_ex',

--产品名称

'ex',

--OLE DB 字符

'Microsoft.Jet.OLEDB.4.0',

--数据源

--格式:

-- 盘符:\路径\文件名

-- \\网络名\共享名\文件名 (网络版本)

'd:\testdb\mybook.xls' ,

null,

--OLE DB 提供程序特定的连接字符串

'Excel 5.0'

GO

----创建链接服务器上远程登录之间的映射

--链接服务器默认设置为用登陆的上下文进行

--现在我们修改为连接链接服务器不需使用任何登录或密码

exec sp_addlinkedsrvlogin 'ai_ex','false'

go

--查询数据

select * from ai_ex...sheet3$

go

3.ms sql版本

--建立连接服务器

EXEC sp_addlinkedserver

--要创建的链接服务器名称

'ai_mssql',

--产品名称

'ms',

--OLE DB 字符

'SQLOLEDB',

--数据源

'218.204.111.111,3342'

GO

--创建链接服务器上远程登录之间的映射

EXEC sp_addlinkedsrvlogin

'ai_mssql',

'false',

NULL,

--远程服务器的登陆用户名

'zhangzhe',

--远程服务器的登陆密码

'fish2231'

go

--查询数据

select * from ai_mssql.pubs.dbo.jobs

go

--还有一个更简单的办法

--这种方式在链接服务器建立后,它是默认开放RPC的

--建立连接服务器

EXEC sp_addlinkedserver

--要创建的链接服务器名称

--这里就用数据源作名称

'218.204.111.111,3342',

'SQL Server'

GO

--创建链接服务器上远程登录之间的映射

EXEC sp_addlinkedsrvlogin

'218.204.111.111,3342',

'false',

NULL,

--远程服务器的登陆用户名

'zhangzhe',

--远程服务器的登陆密码

'fish2231'

go

--查询数据

select * from [218.204.253.131,3342].pubs.dbo.jobs

go

4.Oracle版本

--建立连接服务器

EXEC sp_addlinkedserver

--要创建的链接服务器名称

'o',

--产品名称

'Oracle',

--OLE DB 字符

'MSDAORA',

--数据源

'acc'

GO

--创建链接服务器上远程登录之间的映射

EXEC sp_addlinkedsrvlogin

'o',

'false',

NULL,

--Oracle服务器的登陆用户名

'F02M185',

--Oracle服务器的登陆密码

'f02m185185'

go

--查询数据

--格式:LinkServer..Oracle用户名.表名

--注意用大写,因为在Oracle的数据字典中为大写

select * from o..F02M185.AI

go

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值