zoukankan      html  css  js  c++  java
  • 测试SqlBulkCopy类批量插入数据

    今天读"SQLServer中批量插入数据方式的性能对比"时发现SqlBulkCopy可批量插入数据,而且代码比较简洁,由是我就测试了一下,下面是结果.

    • 如果表的字段长度小于实际字符的长度,记录入库时不是抛出截断异常,而抛出"在从服务器接收结果时发生传输级错误。 (provider: 共享内存提供程序, error: 0 - 管道已结束。)"异常,然后Sql Server停止,数据库无法访问。 这个异常也有点太大了吧!
    • 可定义记录入库批次,当出现异常时,该批次事物回滚,本功能无需定义
    • 如果当一条记录入库失败,其它记录都回滚需要定义参数SqlTransaction
        static void SqlBulkCopyTest(DataTable dt)
        {
            using (SqlConnection conn = new SqlConnection("Server=localhost;DataBase=B2B;Uid=sa;Pwd=ll;"))
            {
                conn.Open();
                SqlTransaction tran = conn.BeginTransaction();
                using (SqlBulkCopy bulkCoye = new SqlBulkCopy(conn
                    , SqlBulkCopyOptions.Default
                    , tran))
                {
                    bulkCoye.DestinationTableName = "song";
                    //设定超时时间
                    bulkCoye.BulkCopyTimeout = 10;
                    //每批插入的行数(如果入库失败,只是本批次事物回滚,如果想全部回滚还需要加参数SqlTransaction)
                    bulkCoye.BatchSize = 2;
                    //在上面定义的批次里,每准备插入1条数据时,呼叫相应的事件(这时只是准备,没有真正入库)
                    bulkCoye.NotifyAfter = 1;
                    bulkCoye.SqlRowsCopied += new SqlRowsCopiedEventHandler(SqlRowsCopied);
                    try
                    {
                        bulkCoye.WriteToServer(dt);
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e.Message);
                    }
                }
            }
        }
    
        static void SqlRowsCopied(object sender, SqlRowsCopiedEventArgs e)
        {
            Console.WriteLine("入库行数:" + e.RowsCopied);
        }
    
  • 相关阅读:
    AcWing 1135. 新年好 图论 枚举
    uva 10196 将军 模拟
    LeetCode 120. 三角形最小路径和 dp
    LeetCode 350. 两个数组的交集 II 哈希
    LeetCode 174. 地下城游戏 dp
    LeetCode 面试题 16.11.. 跳水板 模拟
    LeetCode 112. 路径总和 递归 树的遍历
    AcWing 1129. 热浪 spfa
    Thymeleaf Javascript 取值
    Thymeleaf Javascript 取值
  • 原文地址:https://www.cnblogs.com/zxjyuan/p/2185686.html
Copyright © 2011-2022 走看看