我使用bcp工具使用以下命令将数据从SQL复制到文本文件:
bcp.exe "exec <StoredProcedure>" queryout "temp.txt" -T -r\n -c
此命令在测试环境中按预期运行,并创建/更新所需文件,无需其他提示。
但是当它在客户端环境中运行时,bcp会另外提示字段长度,前缀和字段终止符 - 所以当从SQL Agent作业运行命令时,它会陷入无限的状态等待。
任何想法为什么会发生这种情况?
基于bcp documentation,当使用-c参数时 - 它不应该提示类型等,并且应该使用char作为存储类型,没有前缀,\ t作为字段终止符。
答案 0 :(得分:2)
无需指定记录分隔符,因此请删除-r\n
。 -c
选项将使用制表符表示列和回车符以及换行符(与指定-t\t -r\r\n
相同)。否则,如另一张海报所述,请确保首先指定-c
附注:我建议您使用-f"yourpathandfilename.fmt"
输出格式文件作为练习(而不是解决方案)。在客户端,您也可以使用-f
param导入。这样,如果源和目标之间存在差异,您可以手动调整格式文件。
答案 1 :(得分:1)
我猜你的测试环境和客户端环境之间的某个地方实际执行的命令是“/ n”变成了一个真正的新行。尝试将“-c”放在“-r”之前,看看会发生什么。