2014-07-17 111 views
1

我有一個大的每週CSV文件(從500MB到1GB,超過250萬行)加載到SQL Server 2008 R2數據庫。BULK INSERT或導入和導出數據嚮導?

我能夠使用BULK INSERT命令或導入和導出數據嚮導來加載數據。就我的數據集而言,它們之間的加載時間跨度沒有觀察到的差異。

就性能而言,您推薦的方法是什麼?效率和未來的維護是否關注?

在此先感謝!

乾杯,亞歷克斯


我結束了使用SQL Server導入和導出數據嚮導,並保存到SSIS包。然後我使用Business Intelligence Development Studio編輯保存的包並將其重新導入到SQL Server。它運行良好,只需要2分鐘即可將所有9個CSV文件(從10MB到600 MB)加載到SQL Server數據庫。

回答

4

MSDN論壇:

當SSIS開發人員選擇了使用沿着 了「快速加載」選項上的OLEDB目標「鎖表」,或所使用的SQL服務器 目標,那麼他/她已經有效地使用了BULK INSERT,所以這是一個爭論什麼更快的爭論點。

大容量插入本身有竅門,在SQL Server大賽中更多的可以用 做成讓行更快的一個進程,也就是讓它最小化或者說 根本不記錄。現在禁用約束是另一件事bcp 照顧,而不是SSIS(除非指示),並且這是什麼MSFT可以 決定在SSIS中更改,但SSIS閃耀的是在使用 算法計算出什麼是最佳參數對於給定的 機器/系統使用(例如緩衝區大小等)。

因此,在大多數應用中,SSIS馬上就會變得更快,而且通過適當的調整可以更快速地更快地達到 。

在現實生活中很多因素給基準帶來不同的影響,但在這個階段我傾向於指出沒有真正可測量的差異 。

微軟發佈了有關不同的負載策略,以實現高性能和大容量裝載方法之間做出選擇比較非常豐富的指南 - The Data Loading Performance Guide

也可以看看下面的文章爲好。

1

我會從導入和導出數據嚮導中保存SSIS包,並使用Visual Studio(又名BIDS又名SSDT BI)調整OLE DB目標設置 - 設置獨佔表鎖和大批量大小和提交大小,例如100000行。通常這會使性能提高20%左右。

SSIS是未來調整的最佳選擇,例如,過濾或轉換數據,在加載後禁用和重建索引之前&。

相關問題