2017-05-27 9 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 
関連する問題