SQL BulkCopy vs OPENDATASOURCE哪个更快

时间:2013-07-08 12:01:00

标签: c# .net sql-server sqlbulkcopy

我想从访问.mdb文件中将数据插入到sqlserver中, 这是使用OLEDB执行数据插入SQL BulkCopy或OPENDATASOURCE的最快方法。

对于大约20个表格,数据将是100,000条记录。

感谢。

我是用c#代码做的,我需要哪一个表现更好,我无法比较,因为OPENDATASOURCE要求管理员权限。

2 个答案:

答案 0 :(得分:1)

在我的意见中,使用SQL批量复制可以获得插入大量数据的最佳插入性能,因为此方法完全绕过SQL查询语言并直接将数据流式传输到SQL。

进一步提升绩效

  • 默认情况下,SqlBulkCopy在批量复制操作期间使用行锁。如果指定了SqlBulkCopyOptions中的TableLock选项,则会在批量复制操作期间获得批量更新锁定,并且性能将得到改善。
  • 集群表:如果可行,加载它的最佳方法是删除聚集索引。
  • 索引:索引会产生并行性的巨大问题,所以总是很好 在没有任何索引激活的情况下加载的想法

您可以在白皮书上阅读更多内容:SqlBulkCopy的性能http://www.sqlbi.com/wp-content/uploads/SqlBulkCopy-Performance-1.0.pdf

答案 1 :(得分:0)

您是否尝试从访问文件将数据导入sql数据库? 数据库 - >任务 - >导入,Microsoft Access作为数据源,mdb文件作为参数

如果您想通过C#执行此操作,则应考虑将用户定义的表类型与存储过程一起使用。