【问题标题】:Get the number of rows inserted in each bulk insert operation获取每个批量插入操作中插入的行数
【发布时间】:2019-03-12 06:24:40
【问题描述】:

我正在使用批量插入操作代码将数据从DataTable 插入到SQL 表中。如何获取每个批量操作中插入的行数?

假设我最初在 SQL 表中有 25 行数据,现在在 DataTable 中有 10 行数据要通过批量插入操作插入。如何获得插入的行?

var table = "TBL_FINANCE";
using (var conn = new SqlConnection("Server=QD2AOUR;Database=FINANCE; uid=sa; Password=neptune; Initial Catalog=FINANCE;Persist Security Info=True;Trusted_Connection=Yes;Integrated Security=SSPI; pooling=false"))
{
    var bulkCopy = new SqlBulkCopy(conn);
    bulkCopy.DestinationTableName = table;
    conn.Open();
    var schema = conn.GetSchema("Columns", new[] { null, null, table, null });
    foreach (DataColumn sourceColumn in dt.Columns)
    {
        foreach (DataRow row in schema.Rows)
        {
            if (string.Equals(sourceColumn.ColumnName, (string)row["COLUMN_NAME"], StringComparison.OrdinalIgnoreCase))
            {
                bulkCopy.ColumnMappings.Add(sourceColumn.ColumnName, (string)row["COLUMN_NAME"]);
                break;
            }
        }
    }
    try
    {
        bulkCopy.WriteToServer(dt);
    }
    catch (Exception ex)
    {
        lblMessage.Text = "Error with Insert Operation...";
        div_message.Visible = true;
        div_message.Attributes.Add("class", "callout callout-danger");
        return;
    }
    finally
    {
        bulkCopy.Close();
    }
}

【问题讨论】:

    标签: c# asp.net bulkinsert


    【解决方案1】:

    SqlBulkCopy 支持通知

      using (var sqlBulk = new SqlBulkCopy(_connectionString))
    {
        sqlBulk.NotifyAfter = 1000;
        sqlBulk.SqlRowsCopied += (sender, eventArgs) => Console.WriteLine("Wrote " + eventArgs.RowsCopied + " records.");
        sqlBulk.DestinationTableName = "Employees";
        sqlBulk.WriteToServer(dt);
    }
    

    system.data.sqlclient.sqlbulkcopy.sqlrowscopied

    using-sqlbulkcopy-for-fast-inserts

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-20
      相关资源
      最近更新 更多