我试图从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#中做同样的事情没有任何改变。
答案 0 :(得分:0)
我怀疑问题是分隔符。序列-t\"\0\"
转换为引号之间的NULL字符。您可以尝试将\0
替换为,
或;
等其他分隔符。如果您确实希望将NULL字符作为分隔符,则应在字符串中插入-t\\0
。