我需要从c#代码调用bcp实用程序。这就是我所拥有的:
var text =
"\"EXEC <stored procedure name> @Date=\"1/1/2013\"\" " +
"queryout \"<network path for file drop>\" -c -t\\0 " +
"-S <server name> -U <user name> -P <password>";
var proc = new System.Diagnostics.Process();
proc.StartInfo.FileName = "bcp";
proc.StartInfo.Arguments = text;
proc.Start();
这是较大型应用程序的一小部分,但由于我有一段时间才能将其运行起来,我已将其拉出自己的控制台应用程序进行测试。这实际上就是主要方法中的所有内容。我知道存储过程在数据库中工作,因为当我从PowerShell调用它时,它工作正常。但是,在调试此代码并单步执行Start方法时,调试器会过去。没有错误,没有犹豫。但是从未创建过预期的平面文件。谁能告诉我我做错了什么?如果这很重要,SP会从DB中的表创建一个空分隔文件。
答案 0 :(得分:1)
试试这个
processCMD("bcp", String.Format("\"select 'COUNTRY', 'MONTH' union all SELECT COUNTRY, cast(MONTH as varchar(2)) FROM DBName.dbo.TableName\" queryout {0}FILE_NAME.csv -c -t; -T -{1}", ExportDirectory, SQLServer));
static void processCMD(string fileName, string arguments)
{
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo.FileName = fileName;
proc.StartInfo.Arguments = arguments;
proc.Start();
proc.WaitForExit();
}