2017-05-27 88 views
1

使用bcp,我正在將文件導入到SQL Server中。我正在使用錯誤文件參數-e errorfilename.txt,但即使沒有錯誤,也會爲每個bcp運行創建此文件。有沒有辦法只寫一個錯誤文件,如果有一個實際的錯誤?只有在發生錯誤時才創建BCP錯誤文件

回答

0

顯然這是-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