2

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

数据就像大约 20 个表的 100,000 条记录。

谢谢。

我是从 c# 代码中执行此操作的,我需要哪一个执行得更好,我无法比较,因为 OPENDATASOURCE 要求管理员权限。

4

2 回答 2

1

在我看来,插入大量数据的最佳插入性能可以通过使用 SQL Bulk Copy 获得,因为这种方法完全绕过 SQL 查询语言并将数据直接流式传输到 SQL。

进一步的性能改进

  • 默认情况下,SqlBulkCopy 在大容量复制操作期间使用行锁。如果在 SqlBulkCopyOptions 中指定了 TableLock 选项,它会在大容量复制操作期间获得一个大容量更新锁,从而提高性能。
  • 聚簇表:如果可行,最好的加载方式是去掉聚簇索引。
  • 索引:索引在并行性方面产生了巨大的问题,因此在没有任何活动索引的情况下加载总是一个好主意

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

于 2013-07-08T12:20:42.180 回答
0

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

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

于 2013-07-08T12:04:59.787 回答