【请教】关于同步两个数据库的数据问题?

Gangelwn 2010-06-05 08:14:28
我这里有两个数据库一个是oracle(在服务器),一个是Sqlite(在本地电脑),我需要将oracle上的某些表的数据批量插入到sqlite中,数据量从一万条到十万条不等。
本人是菜鸟只会用最基本的方法,就是:将oracle数据读取到一个DataSet里,然后再循环将数据插入到Sqlite中。但是这样的方法效率很慢,特别是在将数据保存到DataSet的过程里是最耗时的,插入的时候也不是很理想,请问各位大侠有没有其他的办法可以教一下小弟?先谢谢了!
...全文
469 32 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
ysy4413 2010-06-09
  • 打赏
  • 举报
回复
学习下
Gangelwn 2010-06-09
  • 打赏
  • 举报
回复
我最终是要实现 pda(SQLite数据库)<--> 本地电脑 <--> 服务器(oracle数据库)
pda与服务器上的数据双向同步的!每天都需要同步几次数据~
zhangyongtian_0810 2010-06-09
  • 打赏
  • 举报
回复
路过 ....
xyz136299110 2010-06-09
  • 打赏
  • 举报
回复
我觉得4楼的方法可以,但是如果正好相反呢?
如果是从SQL中导出15-25万条数据(10-25个字段),然后再放到ORACLE呢?
有没有什么好的办法?
xyz136299110 2010-06-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 computerfox 的回复:]
对Oracle和SqlLite不太熟悉,是否可以将oracle的表dump出一个文件,然后在SqlLite导入,如果可以这样,你可以考虑用Process调用相应的程序实现,速度应该是最快的。
[/Quote]
你这个不行滴,用WEB服务,你想下,1-10万行,如果字段多点,绝对内存溢出。(如果低于2G,甚至4G的话)
Gangelwn 2010-06-09
  • 打赏
  • 举报
回复
谁还有什么好办法呢?
jwy0126 2010-06-08
  • 打赏
  • 举报
回复
用“导入数据”这个功能。
逢桥夜泊 2010-06-08
  • 打赏
  • 举报
回复
楼主可以留个联系方式么
Gangelwn 2010-06-08
  • 打赏
  • 举报
回复
Any help is appreciated~
Alan_pft 2010-06-08
  • 打赏
  • 举报
回复
监控 timer
hurricane880 2010-06-07
  • 打赏
  • 举报
回复
我估计读取速度慢的原因不是程序本身的问题,也许是你网络的问题,楼主拿程序去oracle 服务器上读一下看看是不是也是需要50s。
关注中。。。。
qiqishardgel 2010-06-07
  • 打赏
  • 举报
回复
学习,帮顶!
Gangelwn 2010-06-07
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 hurricane880 的回复:]

我估计读取速度慢的原因不是程序本身的问题,也许是你网络的问题,楼主拿程序去oracle 服务器上读一下看看是不是也是需要50s。
关注中。。。。
[/Quote]

不是网络的原因!!!
zhoulingsmile 2010-06-07
  • 打赏
  • 举报
回复
不大会咧。。呵呵。。帮你顶一个。。加油喽。。
Gangelwn 2010-06-07
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 bingxue6688 的回复:]

我认为解决方式有幾种方式:
1,数据库的讀取,你主要的问题是数据库读取慢,这是要首先解决的。读取慢最大的问题是索引没有用到,你要咨询Oracle那边创建的索引是什么样,你的查询语句里面有没有用到索引。如果索引OK千万级的数据库读取速度应该在5秒以内。
2,数据库的写入,如楼上所说用事务是一种处理方式。如果数据库的索引创建太多是很影响写入速度,所以写入多的表应该創建尽量少的索引。我不知道你用的……
[/Quote]

谢谢!!!
我们是在windows mobile5.0上开发的一个读条形码的系统

MicroYang6688 2010-06-07
  • 打赏
  • 举报
回复
我认为解决方式有幾种方式:
1,数据库的讀取,你主要的问题是数据库读取慢,这是要首先解决的。读取慢最大的问题是索引没有用到,你要咨询Oracle那边创建的索引是什么样,你的查询语句里面有没有用到索引。如果索引OK千万级的数据库读取速度应该在5秒以内。
2,数据库的写入,如楼上所说用事务是一种处理方式。如果数据库的索引创建太多是很影响写入速度,所以写入多的表应该創建尽量少的索引。我不知道你用的Sqllite數據庫,如果是SQL數據庫可以批量更新,不需要循環一條一條的插入,查一下幫助看可不可以批量更新。
3,最好的解決方式,是在數據庫寫個定時任務,每個一段時間(1個小時或一天)主動去拉數據到本地,不是說要等到用戶點按鈕的時間才去Oracle讀取。這樣你只需要優化本地數據庫就可以了,讀取慢和寫入慢點都不是問題了。

希望能幫到你。
悔说话的哑巴 2010-06-06
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 gangelwn 的回复:]
我现在是从服务器上读取Oracle的数据(一万条),保存到dataSet中,这个过程差不多50秒的时间
然后再插入到sqlite中大概10秒的时间!

但实际运行的电脑配置更差,所以更耗时。。。所以希望能找个好方法提高性能!
[/Quote]
那只有去优化代码了
Gangelwn 2010-06-06
  • 打赏
  • 举报
回复
SQLite数据库应该是没办法使用SqlBulkCopy类的???


写入sqlite,我是用的事务操作的。

原Oracle数据库,由于不是我电脑上的,我无法更改建立索引。

sql语句只是简单的select from 表 where 两个简单的条件,不知道还能怎么优化?
空心兜兜 2010-06-06
  • 打赏
  • 举报
回复
关注此类问题
Gangelwn 2010-06-06
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 psixm 的回复:]
LZ能把你实现的这个实例发给我一下么,十分感激,我想参考一下,最近看这方面的东西弄得头晕,我的邮箱地址psixm@sina.com,谢谢啦
[/Quote]


抱歉啊,我也没有源代码啊~
加载更多回复(11)

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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