datatable高效写入mysql_如何将DataTable批量写入数据库

本文介绍了如何利用.NET Framework中的SqlBulkCopy类,高效地将大量数据从DataTable批量导入到MySQL数据库中。通过设置ColumnMappings映射字段,并调整BatchSize,可以实现快速的数据迁移。
摘要由CSDN通过智能技术生成

773811cb714813a350f17b29409aee55.png

我们使用.net写循环获取大量数据存在一个DataTable以后,可能需要对这些数据进行一些后处理,前端呈现,或供第三方软件使用,这个时候就需要数据库来中转存储这些数据。如何快速地将DataTable中的大量数据批量导入数据库中,就是今天我遇到的一个问题,经过一番查询,发现了一个SQLBulkCopy的方法,很是好用。

SqlBulkCopy是.NETFramework 2.0新增的类,位于命名空间System.Data.SqlClient下,主要提供把其它数据源的数据有效批量的加载到SQL Server表中的功能。即使表结构完全不同,也可以通过字段间的对应关系,顺利的将数据导过来。

using System.Data;

using System.Data.SqlClient;

public static void DataTableToSQLServer(DataTable dt)

{

string connectionString = @"Persist Security Info=False;Initial Catalog=dbname;Data Source=172.11.111.111; User ID=sa; Password=pwd";

using (SqlConnection destinationConnection = new SqlConnection(connectionString))

{

destinationConnection.Open();

using (SqlBulkCopy bulkCopy = new SqlBulkCopy(destinationConnection))

{

try

{

bulkCopy.DestinationTableName = "callLog";//要插入的表的表名

bulkCopy.BatchSize = dt.Rows.Count;

bulkCopy.ColumnMappings.Add("id", "id");//第一个"id"是dt中的字段名,第二个"id"表中的字段名

bulkCopy.ColumnMappings.Add("note_id", "note_id");

bulkCopy.ColumnMappings.Add("call_start_at", "call_start_at");

bulkCopy.WriteToServer(dt);

System.Windows.Forms.MessageBox.Show("插入成功:"+ dt.Rows.Count+"行");

}

catch (Exception ex)

{

MessageBox.Show(ex.Message);

}

}

}

}

3D中我们可以通过下面代码获得数据库连接

Private ActivePlant As Plant = MiddleServiceProvider.SiteMgr.ActiveSite.ActivePlant

Private oMetaMgr As MetadataManager = ActivePlant.PlantModel.MetadataMgr

Private oModName As String = MiddleServiceProvider.SiteMgr.ActiveSite.ActivePlant.PlantModel.Name

Private sModConn As SQLDBConnection = New SQLDBConnection(ClientServiceProvider.WorkingSet.ActiveConnection.Server, oModName)

Dim SqlConn As SqlConnection = New SqlConnection(sModConn.Connection.ConnectionString)

0

0

vote

Article Rating

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值