使用BCP将数据写入文本文件会提示输入文件存储类型

时间:2015-08-31 17:43:28

标签: sql-server sql-server-2008-r2 bcp

我使用bcp工具使用以下命令将数据从SQL复制到文本文件:

    bcp.exe "exec <StoredProcedure>" queryout "temp.txt" -T -r\n -c

此命令在测试环境中按预期运行,并创建/更新所需文件,无需其他提示。

但是当它在客户端环境中运行时,bcp会另外提示字段长度,前缀和字段终止符 - 所以当从SQL Agent作业运行命令时,它会陷入无限的状态等待。

任何想法为什么会发生这种情况?

基于bcp documentation,当使用-c参数时 - 它不应该提示类型等,并且应该使用char作为存储类型,没有前缀,\ t作为字段终止符。

2 个答案:

答案 0 :(得分:2)

无需指定记录分隔符,因此请删除-r\n-c选项将使用制表符表示列和回车符以及换行符(与指定-t\t -r\r\n相同)。否则,如另一张海报所述,请确保首先指定-c

附注:我建议您使用-f"yourpathandfilename.fmt"输出格式文件作为练习(而不是解决方案)。在客户端,您也可以使用-f param导入。这样,如果源和目标之间存在差异,您可以手动调整格式文件。

答案 1 :(得分:1)

我猜你的测试环境和客户端环境之间的某个地方实际执行的命令是“/ n”变成了一个真正的新行。尝试将“-c”放在“-r”之前,看看会发生什么。