需要通过.net代码运行BCP实用程序

时间:2009-05-13 09:30:46

标签: asp.net sql-server

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

4 个答案:

答案 0 :(得分:3)

看一下SqlBulkCopy课程。还有another article示例。

答案 1 :(得分:2)

您可以在Command对象

中执行此SQL命令
BULK INSERT <TableName> from '<FileName>' with (FORMATFILE='<FmtFile>')

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

答案 2 :(得分:1)

以下是一些可能的选择:

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

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

答案 3 :(得分:0)

我来晚了,但可能会对其他人有所帮助。 我已经测试了这段代码。

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之后,您必须在我的情况下将SQLServer Instance传递给它的本地变量,这样我才能通过。\

            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..storeprocedurename";
string strCmdText = "/C bcp "+ proc + " queryout D:\\NewFolder\\filename.csv -T -c -S .\\";