急!!!求助高手:如何同时从两个数据库上检索数据本人最近遇到一个问题,是这样的:公司有两个不同ORACLE数据库(但它们的表结构等完全相同),这是出于提高查询效率的需要考虑的(SFIS(数据库1)存放近3个月的数据,而SFIS1(数据库2)存放3个月之前的数据),在SFIS里检索需要的数据在速度上明显快于SFIS1;近来,有人提出要求,要求同时从SFIS和SFIS1里检索出他们所需要的数据,并在DELPHI报表上显示。本人现今实现的只是将它们分别显示(BDE DATABASE 、QUERY组件实现),从两个数据库里检索出来的数据是分开的,这里请懂这方面的兄弟姐妹帮帮忙,谢谢了。要求:实现同时在两个数据库上检索数据并合并,而不是连接哦
解决方案 »
- 服务程序的问题:一个service应用程序能否运行两个实例?
- 怎么能让label标签中的某个或某几个字母是黑体字?谢谢!
- 关于Qreport的简单问题
- 关于数据查询的问题;很急很急的
- 怎样得到通过ADSL上网的电脑在internet的IP地址
- 请问如何捕获特定异常信息(例如:query.execsql是否执行成功!)?
- 合并WORD表格单元,怎样让单元中的内容也合并掉呢??
- 下午餐要交程序,怎么读取当前目录中的db数据库文件!急急
- 长期困扰,让我隐隐做痛。求教各位给我良药!!!
- Delphi中的DBedit和wwDBgrid控件问题。
- 韩文系统下为什么有部分中文输入时显示?,有部分正常。应该怎么解决呢?进者有分,200分贡献给大家
- 如何解决delphi编译生成的exe文件在任务栏上的显示信息
使用连接服务器
oracle不知道有没这个东东
另外,如果用BDE,它有别名支持,不过在oracle的别名中没试过,你可试一下
select * from SFIS
union all
select * from :ora1:SFIS
不过我仍建议用dblink
select * from SFIS
union all
select * from :ora1:SFIS
CREATE PUBLIC DATABASE LINK Linkname CONNECT TO username IDENTIFIED By password USING‘connectstring'
其中:Linkname 数据库链接的名称
Username 用户帐户
password 口令
connectstring 远程数据库的连接串
这样你可方便地写
select * from SFIS
union all
select * from SFIS1@Linkname
1.to mxlinux(mxlinux)
多线程+2个ADO是不能将两个数据集合并到一个数据集中的
2.在delphi中,如果是用STANDARD数据驱动(如paradox,fox),是可以用
select * from SFIS
union all
select * from :ora1:SFIS
的,其中ora1是另一BDE的别名
3.在delphi的bde中实现sql的union,我还是写一下:
with Query1 do
begin
close;
sql.clear;
sql.add('select * from SFIS');
sql.add('union all');
sql.add('select * from SFIS1@Linkname');
//或用sql.text:=将所有的sql写成一行,用空格格开
open;
end;
4.dblink建一次就可以,它会一直存在,除非你删除它
CREATE PUBLIC DATABASE LINK Linkname CONNECT TO username IDENTIFIED By password USING‘connectstring',这部分应该在哪里声明?
我还是菜鸟,请多指教!
还有一个问题:
select * from SFIS
union all
select * from SFIS1@Linkname
from后面应该是表名啊,数据这样不行吧?
2.select * from SFIS1@Linkname 当然是可以的,oracle是分布式数据库,完全支持这样的语法(你可找一下plsql的资料)
CREATE PUBLIC DATABASE LINK Linkname CONNECT TO sfism4 IDENTIFIED By sfism4 USING‘connectstring'
Linkname名字随便取吗?connectstring又该怎么样?这样会在SFIS1里创建DBLINK?
这样会在SFIS中创建一个SFIS1的DBLINK(而非在SFIS1中)
“先用system用户登录到数据库1”,用数据库1的其中一个用户登陆不行吗?
我的SFIS和SFIS1都有两个相同的用户sfism4、sfis1(密码分别是sfism4、sfis1),我查了一下书籍,connectstring好象可以直接这样写:‘sfis1’
connectstring与你的数据库有关,你可相关工具(如oracle自带的Network Administration)建一connectstring与你数据库的SID相连(如果你已能在SFIS所在服务器上访问到SFIS1,说明存在connectstring),一般人会将connectstring与SID设成相同,所以你的connectstring可能就是'sfis1’
keiy(),不好意思!