zoukankan      html  css  js  c++  java
  • SqlBulkCopy(大数据量拷贝)

    /// <summary>
    /// 批量执行SqlBulkCopy数据迁移操作
    /// </summary>
    /// <param name="dtblSource">数据源</param>
    /// <param name="strPreSqlSentence">执行前需要执行的脚本,如先清空表等,可为空</param>
    /// <param name="strDestinationTablesName">目标数据库表名称</param>
    /// <returns></returns>
    public static bool ExeSqlBulkCopy(DataTable dtblSource, string strPreSqlSentence,string strDestinationTablesName)
    {
        
    using (SqlConnection connection = new SqlConnection(connectionString))
        {
            
    bool blReturnValue = false; connection.Open();

            
    //请在插入数据的同时检查约束,如果发生错误调用 sqlbulkTransaction事务
            SqlTransaction sqlbulkTransaction = connection.BeginTransaction();
            
            
    if (strPreSqlSentence != "")
            {
                SqlCommand sqlCmd 
    = new SqlCommand();
                sqlCmd.Connection 
    = connection; sqlCmd.Transaction = sqlbulkTransaction;

                
    try
                {
                    sqlCmd.CommandText 
    = strPreSqlSentence; sqlCmd.ExecuteNonQuery(); blReturnValue = true;
                }
                
    catch (Exception exc)
                {
                    Log.WriteLog(
    "批量插入前语句失败", exc); sqlbulkTransaction.Rollback(); connection.Close(); return false;
                }
            }

            SqlBulkCopy BulkCopy 
    = new SqlBulkCopy(connection, SqlBulkCopyOptions.CheckConstraints, sqlbulkTransaction);

            BulkCopy.DestinationTableName 
    = strDestinationTablesName; BulkCopy.BulkCopyTimeout = 1200;

            
    try
            {
                BulkCopy.WriteToServer(dtblSource); sqlbulkTransaction.Commit(); blReturnValue 
    = true;
            }
            
    catch (Exception exp)
            {
                sqlbulkTransaction.Rollback(); Log.WriteLog(
    "批量插入语句失败", exp); blReturnValue = false;
            }
            
    finally
            {
                BulkCopy.Close(); connection.Close();
            }

            
    return blReturnValue;
        }
    }
  • 相关阅读:
    j函数 判断以 什么开头
    vue 自定义封装组件 使用 model 选项
    学习旧岛小程序 (3)组件的样式
    JavaScript事件处理程序的3种方式
    常用的JS页面跳转代码调用大全
    JS基础知识:Javascript事件触发列表
    详解JavaScript中的事件处理
    常用的JavaScript字符串处理函数及用法
    如何利用CSS代码使图片和文字在同一行显示且对齐
    利用DIV+CSS制作网页过程中常用的基本概念及标签使用细节
  • 原文地址:https://www.cnblogs.com/zhangpengshou/p/1769214.html
Copyright © 2011-2022 走看看