我想从 access .mdb 文件中将数据插入到 sqlserver 中, 这是使用 OLEDB 执行数据插入 SQL BulkCopy 或 OPENDATASOURCE 的最快方法。
数据大约是 20 个表的 100,000 条记录。
谢谢。
我正在从 C# 代码执行此操作,我需要哪一个执行得更好,我无法比较,因为 OPENDATASOURCE 正在请求管理员权限。
最佳答案
在我看来,使用 SQL 批量复制可以获得插入大量数据的最佳插入性能,因为此方法完全绕过 SQL 查询语言并将数据直接流式传输到 SQL。
进一步的性能改进
- 默认情况下,SqlBulkCopy 在大容量复制操作期间使用行锁。如果在 SqlBulkCopyOptions 中指定了 TableLock 选项,它会在大容量复制操作期间获得大容量更新锁,并且性能将得到提高。
- Clustered Table:如果可行,加载它的最佳方式是移除聚集索引。
- 索引:索引在并行性方面造成了巨大的问题,所以它总是一个好方法吗? 在没有任何索引事件的情况下加载的想法
您可以阅读更多白皮书:SqlBulkCopy 的性能 http://www.sqlbi.com/wp-content/uploads/SqlBulkCopy-Performance-1.0.pdf
关于c# - SQL BulkCopy 与 OPENDATASOURCE 哪个更快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17526092/