实现数据库之间的同步

SyncNavigator是一款功能强大的数据库同步软件,适用于SQL SERVER, MySQL,具有自动/定时同步数据、无人值守、故障自动恢复、同构/异构数据库同步、断点续传和增量同步等功能,支持Windows xp以上所有操作系统,适用于大容量数据库快速同步。

安装包下载地址:https://www.syncnavigator.cn/Setup.zip

帮助文档地址:https://www.syncnavigator.cn/Help_zh-CN.chm

Web文档地址:https://www.syncnavigator.cn/chm/index.htm


数据库A有表Table_A,想把Table_A内容同步到数据库B的表Table_B,除了用循环逐条Insert之外,是否有批量写入的方式?比如:

ado_A_query 和 ado_B_table通过不同的connection分别连接到数据库A和B,执行下面的语句:

ado_A_query.SQL.Text := 'Select * From Table_A'
ado_A_query.Open;

ado_B_table.TableName := 'Table_B';  //Table_B是空表,字段定义与Table_A完全一致
ado_B_table.Active := True;
ado_B_table.RecordSet := ado_A_query.RecordSet;
ado_B_query.UpdateBatch(arall);

UpdateBatch只有在记录修改过之后才会提交回数据库吧,记录你读取后实际并没有被修改过。
其实逐条insert就可以,只要包裹在一个事务中就行了,性能比默认的一条insert一个事务还是高很多的。
数据库自身一般都带有Bulk write的功能,但是ADO中未必能用的了这些功能。可以试试不用delphi程序来实现数据库同步,直接用数据库的sql脚本来做。

 

用Delphi来实现数据表同步是一种效率很差的方法,建议用sql server management studio提供的数据导入功能来代替。
Sql Server还提供了Integration Service, 这是一个功能更强大、但也更复杂、适用于不同类型数据库之间的数据导入导出功能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值