最近项目中,需要使用到数据同步这个功能,客户老系统使用的是Acces2003数据库,现在需要把里面的所有数据都导入的到MSSQL2005中来。新的客户端需要这个功能,点击同步按钮以后,就需要把Access里面做的数据新增、修改和删除都全部反应到MSSQL2005数据库里面来。之前考虑了很多种方案,但是都最终否决掉了。
现在采用的是每次同步,分段同步,每个表为一个段,同步表的时候,先清除掉这表里面的所有数据,再插入Access里面最新的数据,但是,但是Access数据库里面的表数据有的可以到达200W。
现出现问题:
1、有个表出现了100W条数据,但是只有两个字段,全部读到DataSet里面的话,可能要读上好几秒甚至上10秒以上,插入的时候出现过很大的问题,常规插入需要10多分钟,经过查资料,使用了System.Data.SqlClient.SqlBulkCopy这个类,进行操作,结果几秒钟插入成功,问题暂时解决,可能会出现问题2出现的问题,暂时没发现。
2、有个表出现了8W数据,虽说没有上个表的数据量庞大,但是,字段却比较多,这个表,我在读到DataSet里面的时候,出现假死了,怎么都没有反应,这个问题暂时还没有解决,本来考虑的使用表数据量到达一定的数量,分段进行插入,但是问题有出现了,客户Access有的表里面没有主键,分段查询的话,性能很低,这个问题暂时都还没解决。
上面问题总结,主要可能现在的问题,出现在大数据量读入到DataSet中的问题,Access没有主键分页查询的问题。
PS:开始一直都没有考虑先删除再插入的数据这种方案,不过,暂时没想到好的了,字段做比较的话,很纠结。。。