批量添加数据的方法

本文介绍了一种使用SqlBulkCopy批量导入大量数据至数据库的方法,通过将DataTable数据直接写入目标表,显著提高了数据导入效率。文章详细展示了如何映射源表和目标表的字段,并设置了批处理大小和超时时间,确保了操作的稳定性和性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在一些大量数据导入数据库的情况下使用,性能提高很大,需要注意几点

一:方法的参数  是一个datatable。这个表的字段结构必须要实际库中表的结构一致,否则添加失败。

二:需要指定表名。tablename就是表名

 

/// <summary>
        /// 批量插入文件流水数据
        /// </summary>
        /// <param name="dt"></param>
        /// <returns></returns>
        public int BulkCopyDataToDB(DataTable dtItems)
        {
            try
            {
                string tableName = "LV_OrderList";
                //插入原始数据到数据库中
                using (SqlBulkCopy bulkCopy = new SqlBulkCopy(ConfigurationManager.ConnectionStrings["YekCMS"].ToString()))
                {
                    bulkCopy.DestinationTableName = tableName;//要插入的表的表名
                    bulkCopy.ColumnMappings.Add("orderId", "[orderId]");
                    if (dtItems.Columns.Contains("arg1"))
                    {
                        bulkCopy.ColumnMappings.Add("arg1", "[arg1]");
                    }
                    if (dtItems.Columns.Contains("arg2"))
                    {
                        bulkCopy.ColumnMappings.Add("arg2", "[arg2]");
                    }
                    bulkCopy.ColumnMappings.Add("categoryName", "[categoryName]");
                    bulkCopy.ColumnMappings.Add("productId", "[productId]");
                    bulkCopy.ColumnMappings.Add("productName", "[productName]");
                    bulkCopy.ColumnMappings.Add("oughtAmount", "[oughtAmount]");
                    bulkCopy.ColumnMappings.Add("paymentStatus", "[paymentStatus]");
                    bulkCopy.ColumnMappings.Add("productType", "[productType]");
                    bulkCopy.ColumnMappings.Add("buName", "[buCode]");
                    bulkCopy.ColumnMappings.Add("orderStatus", "[orderStatus]");
                    bulkCopy.ColumnMappings.Add("mediaId", "[mediaId]");
                    bulkCopy.ColumnMappings.Add("comm_type", "[comm_type]");
                    bulkCopy.ColumnMappings.Add("comm_status", "[comm_status]");
                    bulkCopy.ColumnMappings.Add("comm_rate", "[comm_rate]");
                    bulkCopy.ColumnMappings.Add("commission", "[commission]");
                    bulkCopy.ColumnMappings.Add("order_amout", "[order_amout]");
                    bulkCopy.ColumnMappings.Add("balance_status", "[balance_status]");
                    bulkCopy.ColumnMappings.Add("distribution_source", "[distribution_source]");
                    bulkCopy.ColumnMappings.Add("createDate", "[createDate]");
                    bulkCopy.BulkCopyTimeout = 600;
                    bulkCopy.BatchSize = 10000;
                    bulkCopy.WriteToServer(dtItems);
                }

                return 1;
            }
            catch 
            {
                return 0;
            }
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值