从DataTable到临时表的快速拷贝

本文介绍如何利用System.Data.SqlClient.SqlBulkCopy类将DataTable转换为SQL Server中的临时表,并详细说明了相关代码实现及操作流程。包括临时表的创建、批处理大小设置、超时时间设定、列映射添加以及数据写入目标表的完整过程。

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

使用类System.Data.SqlClient.SqlBulkCopy,如下面的例子,临时表的结构从DataTable建立。


            using (System.Data.SqlClient.SqlBulkCopy sbc = new System.Data.SqlClient.SqlBulkCopy(dbcon.Con))
            {
                DataFunctions.DelTemporyTable(dbcon, "#tmpLTKP");
                sbSql.Append("CREATE TABLE #tmpLTKP(");
                for (int i = 0; i < dt.Columns.Count - 1; i++)
                {
                    sbSql.Append("\r" + dt.Columns[i].ColumnName.Trim() + " VARCHAR(100) NULL, ");
                }
                sbSql.Append("\r" + dt.Columns[dt.Columns.Count - 1].ColumnName.Trim() + " VARCHAR(100) NULL) ");
                dbcon.ExecuteSql(sbSql.ToString());

                
                sbc.BatchSize = 10000; //一次更新的行数
                sbc.BulkCopyTimeout = 60; //操作超时的时间
                sbc.DestinationTableName = "#tmpLTKP"; //目标表
                for (int i = 0; i < dt.Columns.Count; i++)
                    sbc.ColumnMappings.Add(dt.Columns[i].ColumnName, dt.Columns[i].ColumnName); //添加源和目标表之间的列映射。

                try
                {
                    sbc.WriteToServer(dt); //写入目标表的方法

                    DataFunctions.DataBrow(dbcon.GetDataTable("SELECT * FROM #tmpLTKP").DefaultView );

                }
                catch (Exception ex)
                {
                    MsgBoxEx.Show(ex.Message);
                }
                finally
                {
                    dbcon.CloseCon();
                }
            }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值