CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  数据库相关

关于数据复制,请名位高手帮忙解决一下这个问题小弟不甚感激

楼主xjdelphiuser(石头)2003-12-01 11:54:57 在 Delphi / 数据库相关 提问

我现在在做一个数据迁移的模块,就是将一个库中的数据导入另一个库中,为了说明情况用A  
  代表源库,B代表目标库,  
  A库和B库中的表结构不一样,在A库向B库导数据中需要进行一些数据转换,如字符转为数据值型之类的也可以是个算术表达式,现在一切工作都做好了数据也可以导进去了,  
  但遇到一个大问题就是速度慢的问题,  
  我的环境是delphi5.0+ado+oracle8.17  
  在进行转换时是这样的用TADOQuery将源表打开(在这里用户可以随意设置查询条件)  
  对源表进行循环再对映射好的每一个字段循环对需要进行数据转换或计算的字段求出结果后再赋给目标表的每一个字段,每条记录POST一下,然后是一张表一个事务,但这样速度太慢了,  
  刚开始还可以但越往后越慢,上了一千多条那速度就不能忍受了,但我的源库中的十几张表都是几十万或十几万条呀,请名位帮忙给个见议,小弟不甚感激  
  问题很急在线等待佳音 问题点数:100、回复次数:12Top

1 楼jingbianfc(『静⊙变』)回复于 2003-12-01 12:33:37 得分 20

如果一条一条的处理,你用BDE的TABLE还快些  
  如果用你ADO,你就是ADOCOMMAND吧,再在SQL和ADO的相关方面做些优化  
  或者你可以尝试DBX访问  
  我的看法,仅供参考:)Top

2 楼xjdelphiuser(石头)回复于 2003-12-01 12:36:40 得分 0

DBX是什么,小弟初来扎道,请赐教;Top

3 楼zenwin(zenwin)回复于 2003-12-01 12:40:32 得分 20

这样肯定慢了,   在操作目的表时,就不用打开了,   直接写语句,   insert/   update   ,这样执行起来要快很多的Top

4 楼xjdelphiuser(石头)回复于 2003-12-01 12:58:10 得分 0

用SQL语句有很多弊端,因为两第表的构不同不能用INSERT   INTO   TABLE1(FIELD1,...FIELDN)   SELECT   *   FROM   TABLE2;  
  只有把每个字段的值得到以后再凑成INSERT语句,这样一来如果一个字段中的类型是字符型而且字段的值中带有一个单引号,就不行了,是吧?所以这不是一个好的方法;  
  而且如果源表中字段的类型是BLOB或LONG等类型的就不能凑成SQL语句了;Top

5 楼qybao(阿宝)回复于 2003-12-01 13:15:14 得分 10

可以试试用batchmove  
  一般数据库备份,数据迁移什么的用batchmove比较方便  
  Top

6 楼xjdelphiuser(石头)回复于 2003-12-01 16:07:34 得分 0

还有没有其它的办法呀,Top

7 楼cjfzy(他山之石,可以攻玉。)回复于 2003-12-01 16:31:21 得分 10

A和B在同一台机器上吗?慢可能是因为网络慢。因为网络每次把A的东西拿到程序执行机器上,再传到B所在的机器上!Top

8 楼HiMrXia(快乐每一天)回复于 2003-12-01 16:38:09 得分 25

 
  先将整理好的A数据插入一个TClientDataSet,该DataSet不要和B保持联接,其中只有表结  
   
  构,等程序将所有整理后的A数据都插入DataSet后,统一更新至B,千万不要一条一条的提交Top

9 楼xjdelphiuser(石头)回复于 2003-12-01 17:10:10 得分 0

to   cjfzy(他山之石,可以攻玉。)     网络没有问题;  
  to     HiMrXia(快乐每一天)     我没有一条一条的提交,我是每隔500条数据提交一次,你的方法我试一下:)  
  Top

10 楼xjdelphiuser(石头)回复于 2003-12-01 18:01:23 得分 0

我看了一下,好像用_RECORDSET,可以提高不少速度,有谁用过它的呀?Top

11 楼xtascf(风中之峰)回复于 2003-12-01 18:47:34 得分 10

你可以用batchmove.append的方法,你最好先看一下有关tbachmove的相关资料,你就会感觉很简单了。Top

12 楼haacat(哈)回复于 2003-12-01 20:18:00 得分 5

batchmove是个不错的选择!  
  可以值得一试哦!!!  
   
   
   
  Top

相关问题

  • 数据复制
  • 数据复制
  • 数据复制
  • 数据复制
  • 数据库复制
  • 数据库复制
  • 复制数据库
  • 关于数据库自动同步复制的问题。请大侠帮帮忙!!!感激不尽!
  • 数据复制!!!大送分!!!
  • 数据库整体复制

关键词

  • 字段
  • 数据
  • 语句
  • ado
  • 网络
  • sql
  • batchmove
  • 库
  • 表
  • 提交

得分解答快速导航

  • 帖主:xjdelphiuser
  • jingbianfc
  • zenwin
  • qybao
  • cjfzy
  • HiMrXia
  • xtascf
  • haacat

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo