1
使用bcp
,我正在將文件導入到SQL Server中。我正在使用錯誤文件參數-e errorfilename.txt
,但即使沒有錯誤,也會爲每個bcp
運行創建此文件。有沒有辦法只寫一個錯誤文件,如果有一個實際的錯誤?只有在發生錯誤時才創建BCP錯誤文件
使用bcp
,我正在將文件導入到SQL Server中。我正在使用錯誤文件參數-e errorfilename.txt
,但即使沒有錯誤,也會爲每個bcp
運行創建此文件。有沒有辦法只寫一個錯誤文件,如果有一個實際的錯誤?只有在發生錯誤時才創建BCP錯誤文件
顯然這是-e
選項的工作原理; Microsoft Docs說:
-e err_file指定用於存儲bcp實用工具無法從文件傳輸到數據庫 任何行錯誤文件的完整路徑。來自bcp命令的錯誤消息轉到用戶的工作站 。 如果未使用此選項,則不會創建錯誤文件。
如此看來,以防止錯誤文件創建的唯一辦法是避免使用-e
選項,但是這不是你想要的。
作爲解決方法,您可以使用Powershell運行bcp並在bcp命令完成後刪除所有空文件。例如:
$yourPath="F:\bcp_error"
bcp YOUR_DB.YOUR_SCHEMA.YOUR_TABLE in F:\BCP\data_file_1.bcp -c -T -e $yourPath\errorfilename_1.txt
bcp YOUR_DB.YOUR_SCHEMA.YOUR_TABLE in F:\BCP\data_file_2.bcp -c -T -e $yourPath\errorfilename_2.txt
bcp YOUR_DB.YOUR_SCHEMA.YOUR_TABLE in F:\BCP\data_file_n.bcp -c -T -e $yourPath\errorfilename_n.txt
Get-ChildItem -Path $yourPath | where {$_.length -eq 0} | remove-Item