javasqlbulkcopy使⽤,SqlBulkCopy批量导⼊数据SqlBulkCopy 这个类⽤于数据库⼤批量的数据传递,通常⽤于新旧数据库之间的更新。关键的⼀点是,即使表结构不同,也可以通过表字段或者字段位置建⽴映射关系,将所需的数据导⼊到⽬标数据库
使⽤事务批量导⼊数据 ,注:datatable 的列的顺序要和数据库表的列的顺序⼀致
public bool sqlbulkCopyDT(DataTable sqlbulkCopyDT, string TableName, string strConn)
{
using (SqlConnection conn = new SqlConnection(strConn))
{
conn.Open();
SqlTransaction tran = conn.BeginTransaction();
try
{
if (sqlbulkCopyDT != null && sqlbulkCopyDT.Rows.Count > 0)
{
SqlBulkCopy bulkCopy = new SqlBulkCopy(conn, SqlBulkCopyOptions.CheckConstraints, tran);
bulkCopy.BulkCopyTimeout = 3600;
try
{
bulkCopy.DestinationTableName = TableName;//***代表要插⼊数据的表名
foreach (DataColumn dc in sqlbulkCopyDT.Columns) //传⼊上述table
{
bulkCopy.ColumnMappings.Add(dc.ColumnName, dc.ColumnName);//将table中的列与数据库表这的列⼀⼀对应
}
bulkCopy.WriteToServer(sqlbulkCopyDT);
bulkCopy.Close();
}
catch (Exception ex)
{
bulkCopy.Close();
tran.Rollback();
return false;
}
}
tran.Commit();
conn.Close();
}
catch (Exception ex)
{
tran.Rollback();
conn.Close();
return false;
}
}
return true;
}
/
//
/// SqlBulkCopy类的使⽤,批量更新数据
///
public static void SqlBulkCopyDemo()
{
String connStr = ConfigurationManager.ConnectionStrings["connStr"].ToString(); //从数据库中获得表结构和数据
DataTable student = new DataTable();
SqlDataAdapter adapter = new SqlDataAdapter("select * from student", connStr); adapter.Fill(student);
//向表中添加数据
DataRow dr;
Random r = new Random();
Stopwatch st = new Stopwatch();
for(int i = 0; i<1000000; i++)//⼀百万条数据
{//数据表中的列:name,no,age,sex
dr = student.NewRow();
dr[0] = "⼩花" + i;
dr[1] = 108 + i;
dr[2] = r.Next(9, 40);//这⾥是因为数据表中有约束,
dr[3] = (i % 2 == 0 ? "男" : "⼥");//这个也是有约束
sqltransaction什么意思
student.Rows.Add(dr);
}
SqlBulkCopy bulk = new SqlBulkCopy(connStr);
bulk.DestinationTableName = "student";//设置⽬标表,这⾥是数据库中的student表bulk.ColumnMappings.Add(0, 0);//建⽴映射关系
bulk.ColumnMappings.Add(1, 1);
bulk.ColumnMappings.Add(2, 2);
bulk.ColumnMappings.Add(3, 3);
st.Start();//开始计时
bulk.WriteToServer(student.GetChanges());
st.Stop();//结束计时
Console.WriteLine("数据插⼊成功,耗时为:" + st.ElapsedMilliseconds + "毫秒"); }

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。