将大型数据集从 MS Access 导入到 SQL 服务器的方法

Ways to import from MS Access to SQL Server for large datasets

所以我使用的是 C# 和 Visual Studio 2013。我目前有一个导入器使用 System.Data.OleDb 连接到 MS Access 数据库,System.Data.SqlClient 用于 Sql服务器连接。

我最初做的是从 MS Access 读取数据并将 table 存储在 DataTable 中,然后将 DataTable 中的数据存储到 SQL 服务器中。它一直运行良好,直到我最终遇到了一个 table 大约有 30 个奇数列和将近 100 万行并且我得到了一个 OutOfMemoryException。

所以现在我正在尝试考虑变通方法。我正在考虑在尝试加载到 DataTable 之前在 MS Access table 上设置行计数检查,如果它是一定数量的行或更多,我计划尝试写入外部文件然后执行对该文件的导入。

所以我想问的是有人知道我该怎么做吗?只有我见过的解决方案使用 Interop,而且我听说作为一种实践,您不想在代码中使用互操作,因为它速度慢且不太可靠。我试图从 MS Access 导入 .csv 或 .txt 文件,但如果 table 没有主键,我不确定如何迭代 table 如果它当前不在 DataTable 中。

如果您正在对大数据进行导入,您可以使用 OleDbReader。使用 OleDbReader 时,它不会影响您的记忆,因为您一次读取一条记录以插入另一个数据库。

这可能需要稍长的时间,但会确保在没有内存不足错误的情况下完成。