使用SqlBulkCopy将datatable数据批量导入sqlServer
来源:互联网 发布:choice数据excel插件 编辑:程序博客网 时间:2024/05/21 17:24
//参数dt,数据源datatable
//参数tableName,目标sqlserver数据表名称
public void ExecuteTransactionScopeInsert(DataTable dt, string tableName)
{
int count = dt.Rows.Count;
int copyTimeout = 600;
bool flag = false;
try
{
using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["DB"].ConnectionString))
{
using (TransactionScope scope = new TransactionScope())
{
cn.Open();
using (SqlBulkCopy sbc = new SqlBulkCopy(cn))
{
//服务器上目标表的名称
sbc.DestinationTableName = tableName;
sbc.BatchSize = dt.Rows.Count;
sbc.BulkCopyTimeout = copyTimeout;
for (int i = 0; i < dt.Columns.Count; i++)
{
//列映射定义数据源中的列和目标表中的列之间的关系
sbc.ColumnMappings.Add(dt.Columns[i].ColumnName, dt.Columns[i].ColumnName);
}
sbc.WriteToServer(dt);
flag = true;
scope.Complete();//有效的事务
}
}
}
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#region 初始化datatable,以便其结构与sqlserver数据表结构相同,这个初始化函数根据每个数据表的不同需要重写,没什么通用性
public DataTable GetTableSchema()
{
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[]{
new DataColumn("oldid",typeof(int)),
new DataColumn("db",typeof(string))});
return dt;
}
#endregion
protected void Page_Load(object sender, EventArgs e)
{
string ids = Request.Params["ids"] == null ? "" : Request.Params["ids"].ToString();//id的集合,id之间用逗号分隔,如“1,2,3,4”
string db = Request.Params["db"] == null ? "" : Request.Params["db"].ToString();//目标sqlserver数据表的名称
if (ids != "" & db != "")
{
string[] sArray = ids.Split(',');
DataTable dt = GetTableSchema(); //初始化datatable
//遍历id集合,将每个id作为一条记录添加到datatable
foreach (string i in sArray)
{
DataRow r = dt.NewRow();
r[0] = i.ToString();
r[1] = db;
dt.Rows.Add(r);
}
ExecuteTransactionScopeInsert(dt, "sqlServerTableName");//将datatable导入到sql server
}
}
- 使用SqlBulkCopy将datatable数据批量导入sqlServer
- 使用SqlBulkCopy将DataTable中的数据批量插入数据库中
- 使用SqlBulkCopy将DataTable中的数据批量插入数据库中
- 使用SqlBulkCopy将DataTable中的数据批量插入数据库中
- DataTable 批量插入SqlServer数据库 使用:SqlBulkCopy
- SqlBulkCopy方法批量导入DataTable表中的数据
- SqlBulkCopy通过DataTable批量插入数据
- 使用 SqlBulkCopy 批量从execl中导入数据
- 【C#--数据】1.使用SqlBulkCopy批量导入数据库的示例
- SqlServer批量插入数据方法--SqlBulkCopy
- SQLBULKCOPY批量插入数据使用
- 《项目经验》--简单三层使用DataTable向数据库表批量导入数据---向SqlServer一张表中导入数据
- 《项目经验》--简单三层使用DataTable向数据库表批量导入数据---向SqlServer多张张表中导入数据
- 简单三层使用DataTable向数据库表批量导入数据---向SqlServer一张表中导入数据
- 使用SqlBulkCopy大批量导入数据
- .net使用SqlBulkCopy导入数据
- .net使用SqlBulkCopy导入数据
- 神奇的 SqlBulkCopy 高性能批量导入sqlserver
- oracle 获取操作系统目录下文件列表
- Windows 系列都有那些版本?
- 提高SQL查询性能的7个法宝
- 利用反射调用方法
- 设计一个类时应该问自己四个问题
- 使用SqlBulkCopy将datatable数据批量导入sqlServer
- Cocoa: NSOperation和NSOperationQueue
- 反编译APK文件
- 修改项目android的jar包版本
- 用两个文件a.txt;b.txt.使用linux命令,复制,a.txt文档倒数第十行的记录to b.txt文档
- 关于unicode,宽字符的问题
- 利用dom4j读取xml文件
- The RS232 Standard --- Tutorial with Signal Name and Definition
- WebRequest,WebResponse发送请求并接受返回结果