【问题标题】:Need to run BCP utility through .net code需要通过 .net 代码运行 BCP 实用程序
【发布时间】:2009-05-13 09:30:46
【问题描述】:

如何通过 .Net 代码运行 SQL Server 的批量复制程序 (BCP) 实用程序?

【问题讨论】:

    标签: asp.net sql-server


    【解决方案1】:

    看看SqlBulkCopy 类。还有another article 的例子。

    【讨论】:

    • 这只会让您插入数据,而不是导出数据。
    【解决方案2】:

    您可以在 Command 对象中执行此 SQL 命令

    BULK INSERT <TableName> from '<FileName>' with (FORMATFILE='<FmtFile>')
    

    用正确的项目名称替换尖括号中的项目

    【讨论】:

      【解决方案3】:

      以下是一些可能的选项:

      1. 从 .NET 2.0 开始,我们可以使用 SqlBulkCopy 类
      2. 使用 BULK INSERT 查询
      3. 使用集成服务包 (SISS)。

      ...和

      1. 如果您仍然需要 bcp 实用程序,那么您可以将其作为进程运行...我会少推荐。

      【讨论】:

        【解决方案4】:

        我迟到了,但可能对其他人有帮助。

        我已经测试过这段代码。

        using System;
        using System.Collections.Generic;
        using System.Data;
        using System.Diagnostics;
        using System.Linq;
        using System.Text;
        using System.Threading.Tasks;
        
        namespace ExportLargeData
        {
            class Program
            {
                static void Main(string[] args)
                {
                    string strCmdText;
                    strCmdText = "/C bcp databasname..tablename out D:\\NewFolder\\filename.csv -S .\\ -c -C RAW -T"; 
                   
        

        重要的是参数以 /C 开头,否则它将不起作用。在 -S 之后,您必须在我的情况下传递 SQL Server 实例,它是本地的,所以我通过 .\

                    System.Diagnostics.Process process = new System.Diagnostics.Process();
                    System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
                    startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
                    startInfo.FileName = "cmd.exe";
                    startInfo.Arguments = strCmdText;
                    process.StartInfo = startInfo;
                    process.Start();
                    process.WaitForExit();
                    process.Close();
                    process.Dispose();
                }
            }
        }
        

        如果你想执行存储过程,那么命令将是

        string proc = "Exec database..storedprocedurename";
        string strCmdText = "/C bcp "+ proc + " queryout D:\\NewFolder\\filename.csv -T -c -S .\\";
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-09-10
          • 2011-05-07
          • 2017-08-28
          • 2013-10-17
          • 1970-01-01
          • 1970-01-01
          • 2016-09-25
          • 2016-03-08
          相关资源
          最近更新 更多