bcp中的字符无效

时间:2014-08-19 19:56:04

标签: c# sql bcp

我试图从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如何逃避"有关。有人会知道传递这些引号的正确方法,或者甚至是问题吗?

编辑:我从powershell ISE运行了有问题的BCP命令。它抛出一个"无法打开BCP主机数据文件"错误。所以我将查询服务器名称更改为它的映射网络驱动器名称,并且它工作正常。但是,在C#中做同样的事情没有任何改变。

1 个答案:

答案 0 :(得分:0)

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