準備大量匯入資料 (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)