比对两个数据库内的数据,这样做可行吗?

sordio2 2007-04-16 09:16:07
有两个数据库,甲用的是SqlServer,乙用的是Oracle,两个数据库的内容每天都有更新,我要作个网页每天比对这两个数据库内的记录,寻找在甲库内出现过后又在乙库内出现的数据。
我的思路是先访问乙库,获取当天更新的数据,然后存入一个Dataset,再逐条将Dataset内的数据到甲库内检索,如果检索到则保留,没检索到就删除。最后的结果应该就是我要的数据了吧?
本人比较外行,实在是硬着头皮做,要是说的不对大家别笑话。
如果有朋友做过类似功能,能提供一点代码的话小弟更是感激不尽。
...全文
322 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
designonline 2007-04-18
  • 打赏
  • 举报
回复
LZ方法是可行的,只是效率问题
DTS的方式,估计是否你另一台服务器限制访问问题,一般都能连接的
sordio2 2007-04-18
  • 打赏
  • 举报
回复
我正在尝试用dts,但是有个困难解决不掉,请大家再指点一下。
在dts新建包的时候创建Oracle数据源,需要填入服务器,我尝试了Oracle
服务器的IP地址和Oracle实例名都不行,不知道该填什么,用怎么样的格式了。
我的Oracle数据库和sqlserver数据库不在同一个服务器上。
谢谢啦!
kason_j 2007-04-16
  • 打赏
  • 举报
回复
嗯 不错,学到一点点
bwangel 2007-04-16
  • 打赏
  • 举报
回复
真是跟自己过不去, 一个系统为何非要用两个数据库,用来玄一下?
ggygd 2007-04-16
  • 打赏
  • 举报
回复
DTS 也可以做到~
Alvin709 2007-04-16
  • 打赏
  • 举报
回复
可行
UPUPUP!~
  • 打赏
  • 举报
回复
LZ效率好像差了点
不过我比较菜,还没想到好的办法
purplesunshine 2007-04-16
  • 打赏
  • 举报
回复
我们最近刚刚做了一个类似的模块

不过我们在设计表的过程中,有专门的表来记录表和表内字段新建的发生日期

这种设计在一般的程序中显然是多于的,但是对于要进行数据比较需求的人,这个功能就很现实了
sordio2 2007-04-16
  • 打赏
  • 举报
回复
谢谢各位热心的朋友,我尝试一下先。
自然框架 2007-04-16
  • 打赏
  • 举报
回复
up
LOOV266 2007-04-16
  • 打赏
  • 举报
回复
string sql1="select * from A";
string sql2="select * from b";
//定义数据连接对象,其中数据库连接字符串是在Web.Config文件中定义的
SqlConnection conn = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionSqlServer"].ToString());
//创建数据适配器对象
SqlDataAdapter da = new SqlDataAdapter(sql1,conn);
//创建DataSet对象
DataSet ds = new DataSet();
//填充数据集
da.Fill(ds,"A");
da=new SqlDataAdapter(sql2,conn);
//创建DataSet对象
DataSet ds2 = new DataSet();
//填充数据集
da.Fill(ds2,"B");
DataSet ds3 = new DataSet();

for(int i=0;i<ds.Tables[0].Rows.Count;i++)
{
for(int j=0;j<ds2.Tables[0].Rows.Count;j++)
{
if(ds.Tables[0].Rows[i]["要比较的字段"].ToString()==ds2.Tables[j].Rows[0]["要比较的字段"].ToString())
{
ds3.Tables[0].Rows.Add(ds.Tables[0].Rows[i]);
}
}

自己敲的,不知道能用上不?
tyougyokuki 2007-04-16
  • 打赏
  • 举报
回复
UP UP
sos110 2007-04-16
  • 打赏
  • 举报
回复
你的方法也不错。
如果我对你的方法理解不出错的话,你的这种操作需要在当天把所有数据输入完后才能用你的程序处理对吧?如果每天的数据量不大的话,这样处理无论可行性还是效率基本都没问题。但是当数据量很大的时候你对比的时间会有些长,同时也不能实时的反映出当前你需要数据(除非你不需要实时监控)
我有一个想法,你可以参考下。你可以建立一个和两个待对比表一样的新表,当任何一个原始数据表的数据有更新的时候,都查另外的一个原始数据表,如果找到相同的数据,就在你新建立的表里增加一条同样的记录。这样做的话,就把你处理的时间分散到了每次的更新原始库中了。单次更新可能时间稍微长点,但是你建立相应的索引后性能不是问题。并且还能通过查看你新建立的表,得到实时数据。
=============================================================================
.net技术交流群 QQ:8793209,欢迎职业的程序员加入讨论交流!
littlekeen 2007-04-16
  • 打赏
  • 举报
回复
这样好像效率太低哦

直接数据库操作不行吗?

DTS服务应该就可以了亚?
littlekeen 2007-04-16
  • 打赏
  • 举报
回复
再逐条将Dataset内的数据到甲库内检索,如果检索到则保留
AdamLin 2007-04-16
  • 打赏
  • 举报
回复
楼主方法可行。
北京的雾霾天 2007-04-16
  • 打赏
  • 举报
回复
你可以分别把两个数据库的记录分次取出然后在程序里查找,当然你的思路是可以做到的,没有问题!
nimeide1234567890 2007-04-16
  • 打赏
  • 举报
回复
ding
shrinerain 2007-04-16
  • 打赏
  • 举报
回复
直接导出为文本文件.
然后diff一下就行了.
Windows下用fc

62,254

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧