none
sql server把一个服务器的数据导入到另一个服务器当中,怎么样让速度更快 RRS feed

  • 问题

  • 这两天在写一个数据导入工具,工具的要求就是:从A服务器的sqlserver2005上把数据库中若干张表的部分数据取出来,导入到另一个服务器B中的sqlserver2008中。我用的方法是首先获得A服务器的SqlDataReader,while(dataReader.Read())循环SqlDataReader,每次拼出10000行insert,sql语句,然后连接B服务器的数据库,执行10000行sql语句,不够10000行的单独处理,然后关闭B服务器的连接,最后关闭A服务器的连接。这样做的话每个小时才能导入20多万条数据,要导的数据有几百万条,太慢了,请教一下有没有更快的办法呀?
    2012年8月3日 7:36

答案

  • 我用的是SqlBulkCopy这个类,也挺快的,而且用起来比较简单,5分钟吧,导400w条数据应该没问题,而且是在两台虚拟机上操作,如果换成服务器的话,应该更快。但是这样貌似只能原封不动的把数据导入到目标数据库中,但是好像不能对源数据的每条数据进行校验。上面您给的资料好像是把数据库中的数据导成excel或者把excel中的数据导入到数据库中。想把数据导入的速度提上去,而且也能够对数据进行检验的,有没有其他的方法呀?
    • 已标记为答案 占占wyz 2012年8月13日 1:07
    2012年8月7日 1:40

全部回复

  • 或許你可以參考MSDN上有關大容量导入和导出数据的方法。

    http://msdn.microsoft.com/zh-cn/library/ms175937.aspx


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/

    2012年8月3日 15:48
  • 收到,学习了,谢谢哈
    2012年8月3日 19:07
  • 我用的是SqlBulkCopy这个类,也挺快的,而且用起来比较简单,5分钟吧,导400w条数据应该没问题,而且是在两台虚拟机上操作,如果换成服务器的话,应该更快。但是这样貌似只能原封不动的把数据导入到目标数据库中,但是好像不能对源数据的每条数据进行校验。上面您给的资料好像是把数据库中的数据导成excel或者把excel中的数据导入到数据库中。想把数据导入的速度提上去,而且也能够对数据进行检验的,有没有其他的方法呀?
    • 已标记为答案 占占wyz 2012年8月13日 1:07
    2012年8月7日 1:40