目的:从源数据库(Microsoft SQL Server2000)下载数据至目的数据库(MySQL 4.0.25-nt)
连接:源:ODBC;目的:MyODBC3.51.11-2
环境:WindowsXP
开发语言:Delphi7
内容:
源数据库和目的数据库均已建好数据表,数据表的字段定义及顺序均一致。所有表均设有主键。
源表做数据存储用,数据有更新和插入操作。要求目的表与源表内容保持一致。
因为数据库量很大,数据下载时只下载更新数据(表字段定义中均有时间戳),原先是单条数据检索处理,处理速度较慢,现在打算采用TBatchMove控件完成。
因为数据会有更新操作,所以设置TBatchMove控件Mode属性为batAppendUpdate,在下载时出现:"couldn't perform the edit because another user changed the record"
检查可能是未加索引,在程序中加入:
Table_LCL.IndexName := 'PRIMARY';
同样报错,接着修改MyODBC设置,将"return mactching rows"改成"enabled",问题解决。
代码如下:
function TForm_Main.DBDownload: Boolean;
var
i: Integer;
strUpdateTime: String;
begin
BatchMove1.Source := Query