Sql-Server

從 Excel 中並行導入批量行

  • May 27, 2013

我們每週都會收到一個 Excel 文件,目前包含大約 250k 行。該文件每週增長約 300 行。

在 SSIS 中,我已將 Excel 源連接到 OLE DB 目標以導入文件,但這需要很長時間。

我已經研究過使用SQL Command來指定如何選擇工作表的一部分,但我看不到如何將其轉換為並行操作。

在 SSIS 中是否可以拆分 Excel 文件(按行)並並行導入?

我會將 Excel 文件導出到文本文件(例如製表符分隔)並以該格式將其載入到 SSIS 中。讀取 Excel 文件時有時會出現奇怪的錯誤,它會更快且更少。

我希望並行 Excel 導入的任何嘗試都比單個導入慢 - Excel 不是伺服器。

在 SSIS 中,我已將 Excel 源連接到一個OLE DB destination以導入文件,但這需要很長時間。

執行此操作有三個目標適配器:

  • OLE DB 目標
  • 帶有 FastLoad 的 OLE DB 目標
  • SQL Server 目標

OLE DB 目標是最慢的選項,而 SQL Server 目標是最快的。有關詳細資訊,請參閱此處此處

以下是您可以執行的操作:

  1. 在 OLE DB 目標上使用快速載入選項並嘗試使用 batchsize 選項並找到您的最佳數量。
  2. 考慮刪除目標表上的索引並在載入數據後重新創建它們。對於大量數據,刪除和重新創建索引比插入索引更快。
  3. 如果包在目標伺服器本身上執行,請使用 SQL Server 目標轉換。它比其他任何東西都要快得多。
  4. 由於集成服務是關於移動大量數據的,因此您希望最大限度地減少網路成本。這意味著值 32K (32767) 是最快的選項。不要使用 sp_configure 在伺服器級別執行此操作,而是按照最佳實踐文章(調整網路部分)中所述調整連接管理器屬性。

作為旁注,您可以參考 SQL CAT 團隊的Top 10 SQL Server Integration Services Best Practices

引用自:https://dba.stackexchange.com/questions/34312