1

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

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

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

4

1 回答 1

5

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

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
于 2012-06-17T20:33:00.903 回答