準備大量匯入資料 (SQL Server)

適用於:SQL Server

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

注意

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

注意

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

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

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

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

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

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

    建議您在大量匯入作業之前,立即將資料庫變更為使用大量記錄復原模式。 事後則應立刻將資料庫重設成完整復原模式。 如需詳細資訊,請參閱檢視或變更資料庫的復原模式 (SQL Server)

    注意

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

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

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

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

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

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

    注意

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

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

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

另請參閱

使用 bcp 公用程式匯入及匯出大量資料 (SQL Server)
使用 BULK INSERT 或 OPENROWSET(BULK...) 匯入大量資料 (SQL Server)
bcp 公用程式
BULK INSERT (Transact-SQL)
大量匯入或大量匯出的資料格式 (SQL Server)
OPENROWSET (Transact-SQL)