大量匯入資料的基本指導方針

您可以使用 bcp 命令、BULK INSERT 陳述式或 OPENROWSET(BULK) 函數,僅從資料檔大量匯入資料。

[!附註]

撰寫自訂應用程式來從物件 (而非文字檔) 大量匯入資料也是可行的。若要從記憶體緩衝區大量匯入資料,請使用 SQL Server Native Client (ODBC) 應用程式發展介面 (API) 或 OLE DB IRowsetFastLoad 介面的 bcp 延伸模組。若要從 C# 資料表大量匯入資料,請使用 ADO.NET 大量複製 API SqlBulkCopy

[!附註]

不支援大量匯入資料到遠端資料表。

當您將資料檔中的資料大量匯入到 MicrosoftSQL Server 的執行個體時,請使用下列指導方針:

  • 為您的使用者帳戶取得必要的權限。

    用於 bcp 公用程式、BULK INSERT 陳述式或 INSERT ...SELECT * FROM OPENROWSET(BULK...)陳述式的使用者帳戶必須擁有資料表的必要權限 (由資料表擁有者指派)。如需有關每個方法所需之權限的詳細資訊,請參閱<bcp 公用程式>、<OPENROWSET (Transact-SQL)>和<BULK INSERT (Transact-SQL)>。

  • 使用大量記錄復原模式。

    這個指導方針適用於使用完整復原模式的資料庫。大量記錄復原模式在對未編製索引的資料表 (「堆積」) 執行大量作業時很有用。因為大量記錄復原不會執行記錄檔資料列插入的作業,所以使用大量記錄復原模式,將有助於防止因記錄交易而用盡空間的情形。如需有關大量記錄復原模式的詳細資訊,請參閱<大量記錄復原模式下的備份>。

    建議您在大量匯入作業之前,立即將資料庫變更為使用大量記錄復原模式。事後則應立刻將資料庫重設成完整復原模式。如需詳細資訊,請參閱<從完整或大量記錄復原模式進行切換的考量>。

    [!附註]

    如需有關如何在大量匯入作業期間盡量減少記錄的詳細資訊,請參閱<大量匯入採用最低限度記錄的必要條件>。

  • 在大量匯入資料之後備份。

    如果是使用簡單復原模式的資料庫,我們建議您在大量匯入作業完成之後進行完整或差異備份。如需詳細資訊,請參閱<建立 SQL Server 資料庫的完整和差異備份>。

    如果是大量記錄復原模式或完整復原模式,記錄備份便已足夠。如需詳細資訊,請參閱<建立交易記錄備份>。

  • 卸除資料表索引以改善大型大量匯入的效能。

    這個指導方針的使用時機,是要匯入的資料量比資料表內的資料量多出很多時。在此情況下,在執行大量匯入作業之前從資料表卸除索引可以大幅提高效能。

    [!附註]

    但是,如果載入小量資料 (相較於已存在資料表中的資料量),卸除索引可能會造成不良的後果。重建索引需要的時間,可能會多於大量匯入作業所省下的時間。

    如需詳細資訊,請參閱<最佳化大量匯入效能>。

  • 尋找並移除資料檔中的隱藏字元。

    許多公用程式和文字編輯器會顯示隱藏字元,這些字元通常是在資料檔結尾。大量匯入作業期間,ASCII 資料檔中的隱藏字元可能會產生問題,造成「發現非預期的 NULL」錯誤。尋找並移除所有的隱藏字元,應該有助於防止這個問題的發生。