如何有效地将数百万条记录从.NET传输到SQL Server

时间:2012-06-17 20:22:31

标签: c# .net sql

我有一个C#.NET程序,可以一次处理几百条记录,然后将它们存储在平面文件或SQL Server数据库中。

目前,要将它们存储在SQL Server数据库中,程序会将所有记录写入平面文件,然后使用bcp导入SQL Server。

是否有更有效的方法绕过在导入SQL之前将每条记录写入硬盘的需要?

1 个答案:

答案 0 :(得分:5)

考虑在System.Data.SqlClient命名空间中使用SqlBulkCopy类。您可以像这样使用它:

using (var conn = new SqlConnection(connectionString))
using (var bulkCopy = new SqlBulkCopy(conn))
{
    conn.Open();
    {
        bulkCopy.DestinationTableName = "dbo.MyTable";
        DataTable dt = BuildMyData();
        try
        {
            bulkCopy.WriteToServer(dt);
        }
        catch (Exception ex){Console.WriteLine(ex.Message);}
    }
}

WriteToServer方法已重载,将接受3种不同的参数数据类型:

  • DataRow[]
  • DataTable
  • IDataReader