回答
最好的方法是使用bcp
utility或SSIS workflow。這些工具具有諸如高速緩存和批處理等優化功能,可以在天真的實現中遺漏您的遺漏。下一個最佳選擇是BULK INSERT
聲明,只要SQL Server引擎本身可以訪問該文件。最後一個選項是SqlBulkCopy
類,它允許您的應用程序讀取文件,可能處理它並轉換它,然後將數據作爲枚舉器提供給SqlBulkCopy。
正在使用C#的要求?最快的方法是使用bcp命令行工具:http://msdn.microsoft.com/en-us/library/ms162802.aspx
感謝克里斯沙恩,我想用C#,因爲這將是用C#編寫的應用程序的一部分 – 2012-01-26 22:21:22
我最近工作的同類問題,我意識到有幾個解決方案。
我寫了一個BatchProgram(用於批處理程序設計閱讀 - http://msdn.microsoft.com/en-us/magazine/cc164014.aspx)
您可以使用SQL Server工具要麼BCP.EXE或OSQL.EXE或.NET框架提供SqlBulkCopy類。
我最終使用BCP(我得到的CSV文件,並用于格式化文件並加載數據)和OSQL(我用OSQL其中i有一個文件提供給所述存儲過程)
我還去了.NET Process類,並使用outputdatarecieved事件將BCP.exe的所有輸出記錄到控制檯(閱讀 - http://msdn.microsoft.com/en-us/library/system.diagnostics.process.outputdatareceived.aspx),這工作得很好。
我也嘗試過SQLBulkCopy類,但如果您首先將數據加載到數據表(http://msdn.microsoft.com/en-us/library/ex21zs8x.aspx),它可能會很慢,如果您使用IDataReader(http://msdn.microsoft.com/en-us/library/434atets.aspx)它可能會很快。
因爲我有數百萬行,我嘗試使用CSVReader(http://www.codeproject.com/Articles/9258/A-Fast-CSV-Reader),這是非常快的。但下來的行數太多的問題在數據轉換,我沒有太多的靈活性在SQL服務器端。
我結束了使用BCP和OSQL。
- 1. 在SQL Server中插入批量記錄
- 2. 無法將記錄插入到SQL Server CE數據庫中
- 3. 如何將記錄插入到sql server express數據庫表中?
- 4. Python:批量插入數據到SQL Server
- 5. 我只能將少量記錄插入到SQL Server數據庫中
- 6. 如何使用node.js將數據批量插入到SQL Server中
- 7. 如何將複雜對象批量插入SQL Server數據庫
- 8. 批量插入圖片到SQL Server數據庫
- 9. PHP - 插入記錄到SQL數據庫
- 10. 從Oracle數據庫插入缺少的記錄到SQL Server數據庫中
- 11. 使用C#數據對象將記錄插入到SQL Server數據庫
- 12. 使用TableAdapter插入記錄到SQL Server Compact數據庫
- 13. 從Csv文件插入記錄到數據庫表(SQL Server)
- 14. 批量從Excel插入到SQL Server中
- 15. 批量插入到SQL Server 2005中
- 16. 批量插入到SQL Server 2008中
- 17. 批量插入記錄Slick
- 18. 批量記錄插入
- 19. 如何使用JSON將記錄插入到SQL數據庫中
- 20. 將記錄插入到SQL壓縮數據庫中
- 21. 插入數據到SQL Server數據庫
- 22. 將大量記錄插入SQL Server數據庫的最快方法是什麼?
- 23. 批量插入SQL Server
- 24. SQL Server的批量插入
- 25. 使用批量插入將文件插入到SQL Server 2008 R2
- 26. SQL Server批量複製插入百萬條記錄慢
- 27. SQL Server批量插入int到bigint
- 28. 批量插入到SQL Server 2005問題
- 29. 批量更新/插入數據到sql數據庫
- 30. 無法將數據插入到SQL Server數據庫中
謝謝..我會檢查 – 2012-01-26 22:21:35
我用SqlBulkCopy的,但問題是我怎麼能知道使用SqlBulkCopy的總行插入.WriteToServer()函數 – 2012-01-27 14:46:48
出於好奇,爲什麼你會把'SqlBulkCopy'放在其他選項後面呢? – jadarnel27 2012-01-30 21:34:17