SqlBulkCopy方法批量导入DataTable表中的数据
2013-06-13 16:59
567 查看
例1:
private void BulkInsert()
{
SqlConnection sqlcon = new SqlConnection("Data
Source=LocalHost;Integrated Security=SSPI;Initial Catalog=xiaotest;");
DateTime beginTime = DateTime.Now;
DataTable dt = new DataTable();
dt.Columns.Add("n", typeof(string));
dt.Columns.Add("name", typeof(string));
for (int i = 1;
i <</SPAN> 1000;
i++)
{
DataRow r = dt.NewRow();
r["n"] = i;
r["name"] = "xiao";
dt.Rows.Add(r);
}
sqlcon.Open();
using (SqlBulkCopy bulk = new SqlBulkCopy("Data
Source=LocalHost;Integrated Security=SSPI;Initial Catalog=xiaotest;"))
{
bulk.BatchSize = 1000;
bulk.DestinationTableName = "test2";
bulk.ColumnMappings.Add("n", "n");
bulk.ColumnMappings.Add("name", "name");
bulk.WriteToServer(dt);
}
DateTime endTime = DateTime.Now;
TimeSpan useTime = endTime - beginTime;
dt.Dispose();
time = "使用时间" + useTime.TotalSeconds.ToString() + "秒";
sqlcon.Close();
sqlcon.Dispose()
例2:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
namespace WFM_SANY_SPDM
{
public class SqlBulk
{
public void InsertTable(DataTable dt, string TabelName,DataColumnCollection dtColum)
{
string str = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString.ToString();
//声明数据库连接
SqlConnection conn = new SqlConnection(str);
conn.Open();
//声明SqlBulkCopy ,using释放非托管资源
using (SqlBulkCopy sqlBC = new SqlBulkCopy(conn))
{
//一次批量的插入的数据量
sqlBC.BatchSize = 1000;
//超时之前操作完成所允许的秒数,如果超时则事务不会提交 ,数据将回滚,所有已复制的行都会从目标表中移除
sqlBC.BulkCopyTimeout = 60;
//設定 NotifyAfter 属性,以便在每插入10000 条数据时,呼叫相应事件。
sqlBC.NotifyAfter = 10000;
// sqlBC.SqlRowsCopied += new SqlRowsCopiedEventHandler(OnSqlRowsCopied);
//设置要批量写入的表
sqlBC.DestinationTableName =TabelName;
//自定义的datatable和数据库的字段进行对应
//sqlBC.ColumnMappings.Add("id", "tel");
//sqlBC.ColumnMappings.Add("name", "neirong");
for (int i = 0; i < dtColum.Count; i++)
{
sqlBC.ColumnMappings.Add(dtColum[i].ColumnName.ToString(), dtColum[i].ColumnName.ToString());
}
//批量写入
sqlBC.WriteToServer(dt);
}
conn.Dispose();
}
//响应时事件
void OnSqlRowsCopied(object sender, SqlRowsCopiedEventArgs e)
{
// Response.Write("<br/> OK! ");
}
}
}
private void BulkInsert()
{
SqlConnection sqlcon = new SqlConnection("Data
Source=LocalHost;Integrated Security=SSPI;Initial Catalog=xiaotest;");
DateTime beginTime = DateTime.Now;
DataTable dt = new DataTable();
dt.Columns.Add("n", typeof(string));
dt.Columns.Add("name", typeof(string));
for (int i = 1;
i <</SPAN> 1000;
i++)
{
DataRow r = dt.NewRow();
r["n"] = i;
r["name"] = "xiao";
dt.Rows.Add(r);
}
sqlcon.Open();
using (SqlBulkCopy bulk = new SqlBulkCopy("Data
Source=LocalHost;Integrated Security=SSPI;Initial Catalog=xiaotest;"))
{
bulk.BatchSize = 1000;
bulk.DestinationTableName = "test2";
bulk.ColumnMappings.Add("n", "n");
bulk.ColumnMappings.Add("name", "name");
bulk.WriteToServer(dt);
}
DateTime endTime = DateTime.Now;
TimeSpan useTime = endTime - beginTime;
dt.Dispose();
time = "使用时间" + useTime.TotalSeconds.ToString() + "秒";
sqlcon.Close();
sqlcon.Dispose()
例2:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
namespace WFM_SANY_SPDM
{
public class SqlBulk
{
public void InsertTable(DataTable dt, string TabelName,DataColumnCollection dtColum)
{
string str = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString.ToString();
//声明数据库连接
SqlConnection conn = new SqlConnection(str);
conn.Open();
//声明SqlBulkCopy ,using释放非托管资源
using (SqlBulkCopy sqlBC = new SqlBulkCopy(conn))
{
//一次批量的插入的数据量
sqlBC.BatchSize = 1000;
//超时之前操作完成所允许的秒数,如果超时则事务不会提交 ,数据将回滚,所有已复制的行都会从目标表中移除
sqlBC.BulkCopyTimeout = 60;
//設定 NotifyAfter 属性,以便在每插入10000 条数据时,呼叫相应事件。
sqlBC.NotifyAfter = 10000;
// sqlBC.SqlRowsCopied += new SqlRowsCopiedEventHandler(OnSqlRowsCopied);
//设置要批量写入的表
sqlBC.DestinationTableName =TabelName;
//自定义的datatable和数据库的字段进行对应
//sqlBC.ColumnMappings.Add("id", "tel");
//sqlBC.ColumnMappings.Add("name", "neirong");
for (int i = 0; i < dtColum.Count; i++)
{
sqlBC.ColumnMappings.Add(dtColum[i].ColumnName.ToString(), dtColum[i].ColumnName.ToString());
}
//批量写入
sqlBC.WriteToServer(dt);
}
conn.Dispose();
}
//响应时事件
void OnSqlRowsCopied(object sender, SqlRowsCopiedEventArgs e)
{
// Response.Write("<br/> OK! ");
}
}
}
相关文章推荐
- 使用SqlBulkCopy将datatable数据批量导入sqlServer
- DataTable数据批量插入数据的库三种方法:SqlCommand.EcecuteNonQurery(),SqlDataAdapter.Update(DataTable) ,SqlBulkCopy.
- 读取接口XML和批量导入数据SqlBulkCopy
- 使用SqlBulkCopy将DataTable中的数据批量插入数据库中
- C#批量保存方法-利用Net SqlBulkCopy 批量导入数据库,速度超快-通用方法源码提供
- 关于批量导入数据类SqlBulkCopy 导入数据时增加额外的列
- C# 使用SqlBulkCopy,批量导入数据,并显示导入进度
- 使用SqlBulkCopy将DataTable中的数据批量插入数据库中
- SqlBulkCopy 批量导入数据 转换表字段类型
- 使用SqlBulkCopy将DataTable中的数据批量插入数据库中
- 使用 SqlBulkCopy 批量从execl中导入数据
- BulkSqlCopy 批量导入数据(Ef支持)
- SqlBulkCopy(批量导入)使用方法
- access最快速的批量导入SQL的方法 使用SqlBulkCopy
- 批量插入数据 C# SqlBulkCopy使用
- SqlBulkCopy(批量复制)使用方法
- C#:用SqlBulkCopy来实现批量插入数据
- .net使用SqlBulkCopy导入数据
- C# 使用 SqlBulkCopy 类批量复制数据到数据库
- 使用事务和SqlBulkCopy导入大批量数据