bcp中无效字符

本文关键字:字符 无效 bcp | 更新日期: 2023-09-27 18:18:48

我正在尝试从c#调用BCP命令。我正在c#代码内构建命令,并得到一个错误。下面是我构建它时的BCP命令:

string.Format("bcp '"EXEC {0} {1}'" queryout '"{2}'" -c -t'"'0'" -S {3} -U {4} -P {5}", spName, filterList, path, server, user, password);

下面是格式化后的命令:

"bcp '"EXEC StatisticsByType @Date='1/1/2013''" queryout '"''''Server''Folder''MagicWords.txt'" -c -t'"'0'" -S server.com -U userName -P password"

得到的错误是:

{"Incorrect syntax near 'queryout'.'r'n'.' is an invalid name because it contains a NULL character or an invalid unicode character."}

我认为这与。net如何转义"。有没有人知道传递这些引号的正确方法,或者这甚至是问题?

EDIT:我从powershell ISE运行了有问题的BCP命令。它抛出了"无法打开BCP主机数据文件"错误。因此,我将查询服务器名称更改为映射的网络驱动器名称,并且它工作了。然而,在c#中做同样的事情没有产生任何变化。

bcp中无效字符

我怀疑问题出在分隔符上。序列-t'"'0'"转换为引号之间的NULL字符。您可以尝试将'0替换为,;等其他分隔物。如果您确实希望使用NULL字符作为分隔符,则应该在字符串中插入-t''0