Sql 批量插入数据

/// <summary>
        /// 批量插入用户配置
        /// </summary>
        /// <param name="connectionString">目标连接字符</param>
        /// <param name="TableName">目标表</param>
        /// <param name="dt">源数据</param>
        public void SqlBulkCopyByDatatable(string connectionString, string TableName, DataTable dt)
        {
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                using (SqlBulkCopy sqlbulkcopy = new SqlBulkCopy(connectionString, SqlBulkCopyOptions.UseInternalTransaction))
                {
                    try
                    {
                        sqlbulkcopy.DestinationTableName = TableName;
                        for (int i = 0; i < dt.Columns.Count; i++)
                        {
                            sqlbulkcopy.ColumnMappings.Add(dt.Columns[i].ColumnName, dt.Columns[i].ColumnName);
                        }
                        sqlbulkcopy.WriteToServer(dt);
                    }
                    catch (System.Exception ex)
                    {
                        throw ex;
                    }
                }
            }
        }

View Code

  #region 将List转换到DataTable

                DataTable dt = new DataTable();
                dt.Columns.Add("RecordNum", typeof(string));
                dt.Columns.Add("UserName", typeof(string));
                dt.Columns.Add("ThemeID", typeof(int));
                dt.Columns.Add("ThemeName", typeof(string));
                dt.Columns.Add("TempID", typeof(int));
                dt.Columns.Add("TempRecordNumberID", typeof(string));
                dt.Columns.Add("TempUrl", typeof(string));
                dt.Columns.Add("ConfigDetail", typeof(string));
                dt.Columns.Add("Remark1", typeof(string));
                dt.Columns.Add("IsDelete", typeof(bool));
                dt.Columns.Add("CreateBy", typeof(string));
                dt.Columns.Add("CreateTime", typeof(DateTime));
                foreach (var p in ucList)
                {
                    DataRow row = dt.NewRow();
                    row["RecordNum"] = p.RecordNum;
                    row["UserName"] = p.UserName;
                    row["ThemeID"] = p.ThemeID;
                    row["ThemeName"] = p.ThemeName;
                    row["TempID"] = p.TempID;
                    row["TempRecordNumberID"] = p.TempRecordNumberID;
                    row["TempUrl"] = p.TempUrl;
                    row["ConfigDetail"] = p.ConfigDetail;
                    row["Remark1"] = p.Remark1;
                    row["IsDelete"] = p.IsDelete;
                    row["CreateBy"] = p.CreateBy;
                    row["CreateTime"] = p.CreateTime;
                    dt.Rows.Add(row);
                }

                #endregion

                //批量保存用户配置
                string myConn = ConfigurationManager.AppSettings["PortalConnString"].ToString();
                T_COM_UserConfigBll.Instance.SqlBulkCopyByDatatable(myConn, "T_COM_UserConfig", dt);

View Code

<add key="PortalConnString" value="initial catalog=HXPortal;data source=xx.xxx.xx.xx;password=xxxx;User id=xxx;" />

View Code

 

时间: 2024-09-21 03:25:30

Sql 批量插入数据的相关文章

C#实现SQL批量插入数据到表的方法_C#教程

本文实例讲述了C#实现SQL批量插入数据到表的方法.分享给大家供大家参考,具体如下: #region 帮助实例:SQL 批量插入数据 多种方法 /// <summary> /// SqlBulkCopy往数据库中批量插入数据 /// </summary> /// <param name="sourceDataTable">数据源表</param> /// <param name="targetTableName"

关于SQL批量插入数据方法比较

技术方案一: 压缩时间下程序员写出的第一个版本,仅仅为了完成任务,没有从程序上做任何优化,实现方式是利用数据库教程访问类调用存储过程,利用循环逐条插入.很明显,这种方式效率并不高,于是有了前面的两位同事讨论效率低的问题. 技术方案二: 由于是考虑到大数据量的批量插入,于是我想到了ADO.NET2.0的一个新的特性:SqlBulkCopy.有关这个的性能,很早之前我是亲自做过性能测试的,效率非常高.这也是我向公司同事推荐的技术方案. 技术方案三: 利用SQLServer2008的新特性--表值参数

SQL批量插入数据几种方案的性能详细对比

公司技术背景:数据库访问类(xxx.DataBase.Dll)调用存储过程实现数据库的访问. 技术方案一: 压缩时间下程序员写出的第一个版本,仅仅为了完成任务,没有从程序上做任何优化,实现方式是利用数据库访问类调用存储过程,利用循环逐条插入.很明显,这种方式效率并不高,于是有了前面的两位同事讨论效率低的问题. 技术方案二: 由于是考虑到大数据量的批量插入,于是我想到了ADO.NET2.0的一个新的特性:SqlBulkCopy.有关这个的性能,很早之前我是亲自做过性能测试的,效率非常高.这也是我向

用SQL批量插入数据的存储过程_数据库相关

循环插入: 复制代码 代码如下: DECLARE @MyCounter INT SET @MyCounter = 0 /*设置变量*/ WHILE (@MyCounter < 2) /*设置循环次数*/ BEGIN WAITFOR DELAY '000:00:10' /*延迟时间10秒*/ INSERT INTO time_by_day (time_id, the_date, the_year, month_of_year, quarter, day_of_month) SELECT TOP 1

用SQL批量插入数据的存储过程

循环插入: 复制代码 代码如下: DECLARE @MyCounter INT SET @MyCounter = 0 /*设置变量*/ WHILE (@MyCounter < 2) /*设置循环次数*/ BEGIN WAITFOR DELAY '000:00:10' /*延迟时间10秒*/ INSERT INTO time_by_day (time_id, the_date, the_year, month_of_year, quarter, day_of_month) SELECT TOP 1

用SQL批量插入数据的代码_MsSql

复制代码 代码如下: DECLARE @MyCounter INT SET @MyCounter = 0 /*设置变量*/ WHILE (@MyCounter < 2) /*设置循环次数*/ BEGIN WAITFOR DELAY '000:00:10' /*延迟时间10秒*/ INSERT INTO time_by_day (time_id, the_date, the_year, month_of_year, quarter, day_of_month) SELECT TOP 1 time_

用SQL批量插入数据的代码

复制代码 代码如下: DECLARE @MyCounter INT SET @MyCounter = 0 /*设置变量*/ WHILE (@MyCounter < 2) /*设置循环次数*/ BEGIN WAITFOR DELAY '000:00:10' /*延迟时间10秒*/ INSERT INTO time_by_day (time_id, the_date, the_year, month_of_year, quarter, day_of_month) SELECT TOP 1 time_

C# 批量插入表SQLSERVER SqlBulkCopy往数据库中批量插入数据

#region 帮助实例:SQL 批量插入数据 多种方法 /// <summary> /// SqlBulkCopy往数据库中批量插入数据 /// </summary> /// <param name="sourceDataTable">数据源表</param> /// <param name="targetTableName">服务器上目标表</param> /// <param nam

c#实现批量插入数据到sql数据库表中,怎么做到跳过插入失败的数据,继续插入

问题描述 c#实现批量插入数据到sql数据库表中,怎么做到跳过插入失败的数据,继续插入 c#实现批量插入数据到sql数据库表中,怎么做到跳过插入失败的数据,继续插入. 并且报错,哪几天数据失败了.和失败的原因. 我现在是可以生成一个把一个数据库表的数据导入到另一个数据库表中.但是呢,有些数据由于某个字段过长无法导入成功,而导致所有的都无法导入.直接造成导入失败.我 想过滤掉那条不成功的继续导入.不至于都导入不成功.急! 想和好久也没解决.网上也没找到说法 解决方案 数据库表插入数据失败数据库批量