2016-06-24 44 views
1

我有多個40000000行以上的Access數據庫。我正在使用數據讀取器讀取每一行,並將每一行逐一插入到SQL數據庫中。但它似乎需要幾周甚至更多!將大量數據行從訪問SQL遷移的最佳方式

有沒有辦法更快地進行遷移?

+1

導出到csv並加載BCP(任何MS SQL版本)。 LOAD DATA(MySql)http://dev.mysql.com/doc/refman/5.7/en/load-data.html – Serg

+1

您可能會開發一個小工具來將數據從excel導入到sql。將訪問文件中的所有記錄複製到excel文件中,並藉助此實用程序執行導入操作。 –

回答

2

我會建議您導出的Access數據庫的CSV文件(或數量的CSV文件),導向是在這裏:https://support.spatialkey.com/export-data-from-database-to-csv-file/

然後,您可以使用批量導入或SSIS導入行到SQL Server。此操作的參考將是; http://blog.sqlauthority.com/2008/02/06/sql-server-import-csv-file-into-sql-server-using-bulk-insert-load-comma-delimited-file-into-sql-server/

這種方式應該快得多。

一個可編程的替代方案將使用SQLBulkCopy類; https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy(v=vs.110).aspx

+0

我從CSV文件中使用批量插入,但它似乎不支持像阿拉伯文字符的Unicode字符。 – Nofuzy

+0

您正在使用哪種批量插入方法?大概這個頁面會說明一些:https://msdn.microsoft.com/en-GB/library/ms188289.aspx – Milney

+0

仍然不支持阿拉伯文字符:(我在回答中使用了第二個鏈接中的方法。 DATAFILETYPE ='widechar'爲方法但不成功! – Nofuzy

相關問題