Calling bcp from c#

本文关键字:from bcp Calling | 更新日期: 2023-09-27 18:18:51

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

Calling bcp from c#

试试这个

    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();
            }