2017-05-27 78 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