从c#调用bcp

时间:2014-08-21 00:04:33

标签: c# bcp system.diagnostics

我需要从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中的表创建一个空分隔文件。

1 个答案:

答案 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();

            }