Sql-Server-2005
將(平面文件)導入 SQL Server
我已經看到了一些關於這個主題適得其反的問題,所以我會盡量具體說明我的擔憂……
我有一個舊的(MS Access)前端,我正在嘗試重建,我把最困擾我的部分留到最後,所以我在這裡。任務是“抓取”一個文件(以前是 XLS),現在它更可能是它的副產品,例如 CSV。
所以這是我的第一個踏腳石,我擔心我的導入結果,根據 Pinal Dave
BULK INSERT
的說法是一個非原子操作:如果任何一行有任何錯誤,它將不會被插入,但會插入其他行。
這對我沒有吸引力,因為我傾向於不信任使用者輸入,我想要更多控制,因此能夠觸發錯誤並且不導入文件的任何部分會更好。我不確定這是否有效地消除了
BULK INSERT
用於此過程的可能性?我還嘗試逐行閱讀並使用
LOOP
循環插入,這是有效的,但不幸的是,即使在優化我的程式碼後,我也需要很長時間,我剛剛從 15 分鐘縮短到 4 分鐘,而且僅適用於 850 條記錄。當從 Access 前端執行時,該過程執行得如此順利,我有點生氣。那是因為
DoCmd.TransferSpreadsheet
VBA 方法。這允許將 XLS 快速導入到臨時表中,並從該表中執行更新表。我想知道在將數據從平面文件源導入 SQL Server 時,人們嘗試了哪些其他選項。誠然,我在這一點上有點困惑。
任何幫助,將不勝感激。
BULK INSERT
在VARCHAR(MAX)
我看來,那麼你不應該有錯誤,從那裡你可以根據需要操作數據並執行標準 SQL 以確保它符合你的要求,然後再將其實際放入目標表中。只是一個建議,但這是我過去的做法。