Sql-Server-2005

將(平面文件)導入 SQL Server

  • September 2, 2015

我已經看到了一些關於這個主題適得其反的問題,所以我會盡量具體說明我的擔憂……

我有一個舊的(MS Access)前端,我正在嘗試重建,我把最困擾我的部分留到最後,所以我在這裡。任務是“抓取”一個文件(以前是 XLS),現在它更可能是它的副產品,例如 CSV。

所以這是我的第一個踏腳石,我擔心我的導入結果,根據 Pinal Dave BULK INSERT的說法是一個非原子操作:

如果任何一行有任何錯誤,它將不會被插入,但會插入其他行。

這對我沒有吸引力,因為我傾向於不信任使用者輸入,我想要更多控制,因此能夠觸發錯誤並且不導入文件的任何部分會更好。我不確定這是否有效地消除了BULK INSERT用於此過程的可能性?

我還嘗試逐行閱讀並使用LOOP循環插入,這是有效的,但不幸的是,即使在優化我的程式碼後,我也需要很長時間,我剛剛從 15 分鐘縮短到 4 分鐘,而且僅適用於 850 條記錄。

當從 Access 前端執行時,該過程執行得如此順利,我有點生氣。那是因為DoCmd.TransferSpreadsheetVBA 方法。這允許將 XLS 快速導入到臨時表中,並從該表中執行更新表。

我想知道在將數據從平面文件源導入 SQL Server 時,人們嘗試了哪些其他選項。誠然,我在這一點上有點困惑。

任何幫助,將不勝感激。

BULK INSERTVARCHAR(MAX)我看來,那麼你不應該有錯誤,從那裡你可以根據需要操作數據並執行標準 SQL 以確保它符合你的要求,然後再將其實際放入目標表中。只是一個建議,但這是我過去的做法。

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