SqlBulkCopy类数据导入(自己测试例子)
2011-03-18 17:59
267 查看
public static readonly string ConnData = "Data Source=192.168.0.100;Initial Catalog=DBName;User ID=sa;Password=123456";
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataTable dt = new DataTable();
dt.Columns.Add("ScheduleKey", typeof(Guid));
dt.Columns.Add("AdminUserKey", typeof(Guid));
dt.Columns.Add("ScheduleRuleKey", typeof(Guid));
dt.Columns.Add("eBayProfileKey", typeof(Guid));
dt.Columns.Add("LaunchTimeSite", typeof(DateTime));
dt.Columns.Add("CreationDate", typeof(DateTime));
for (int i = 0; i < 7000; i++)
{
DataRow dr = dt.NewRow();
dr["ScheduleKey"] = Guid.NewGuid();
dr["AdminUserKey"] = Guid.NewGuid();
dr["ScheduleRuleKey"] = Guid.NewGuid();
dr["eBayProfileKey"] = Guid.NewGuid();
dr["LaunchTimeSite"] = DateTime.Now;
dr["CreationDate"] = DateTime.Now;
dt.Rows.Add(dr);
}
SqlBulkCopy(dt);
}
}
#region 批量插入数据到数据库
DateTime startTime;
private bool SqlBulkCopy(DataTable dt)
{
try
{
startTime = DateTime.Now;
//数据批量导入sqlserver,创建实例 SqlBulkCopyOptions.UseInternalTransaction采用事务 复制失败自动回滚
System.Data.SqlClient.SqlBulkCopy sqlbulk = new System.Data.SqlClient.SqlBulkCopy(ConnData, SqlBulkCopyOptions.UseInternalTransaction);
sqlbulk.SqlRowsCopied +=
new SqlRowsCopiedEventHandler(OnRowsCopied); //订阅复制完成后的方法,参数是 sqlbulk.NotifyAfter的值
sqlbulk.NotifyAfter = dt.Rows.Count;
//目标数据库表名
sqlbulk.DestinationTableName = "pa_ScheduleShadow";
//数据集字段索引与数据库字段索引映射
sqlbulk.ColumnMappings.Add(0, "ScheduleKey");
sqlbulk.ColumnMappings.Add(1, "AdminUserKey");
sqlbulk.ColumnMappings.Add(2, "ScheduleRuleKey");
sqlbulk.ColumnMappings.Add(3, "eBayProfileKey");
sqlbulk.ColumnMappings.Add(4, "LaunchTimeSite");
sqlbulk.ColumnMappings.Add(5, "CreationDate");
//导入
sqlbulk.WriteToServer(dt);
sqlbulk.Close();
return true;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
dt.Dispose();
}
}
//复制完成后的处理事件
private void OnRowsCopied(object sender, SqlRowsCopiedEventArgs args)
{
lblCounter.Text += args.RowsCopied.ToString() + " 条记录已导入";
TimeSpan copyTime = DateTime.Now - startTime;
lblCounter.Text += " 花费时间:" + copyTime.Seconds.ToString() + "." +
copyTime.Milliseconds.ToString() + " 秒";
}
#endregion
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataTable dt = new DataTable();
dt.Columns.Add("ScheduleKey", typeof(Guid));
dt.Columns.Add("AdminUserKey", typeof(Guid));
dt.Columns.Add("ScheduleRuleKey", typeof(Guid));
dt.Columns.Add("eBayProfileKey", typeof(Guid));
dt.Columns.Add("LaunchTimeSite", typeof(DateTime));
dt.Columns.Add("CreationDate", typeof(DateTime));
for (int i = 0; i < 7000; i++)
{
DataRow dr = dt.NewRow();
dr["ScheduleKey"] = Guid.NewGuid();
dr["AdminUserKey"] = Guid.NewGuid();
dr["ScheduleRuleKey"] = Guid.NewGuid();
dr["eBayProfileKey"] = Guid.NewGuid();
dr["LaunchTimeSite"] = DateTime.Now;
dr["CreationDate"] = DateTime.Now;
dt.Rows.Add(dr);
}
SqlBulkCopy(dt);
}
}
#region 批量插入数据到数据库
DateTime startTime;
private bool SqlBulkCopy(DataTable dt)
{
try
{
startTime = DateTime.Now;
//数据批量导入sqlserver,创建实例 SqlBulkCopyOptions.UseInternalTransaction采用事务 复制失败自动回滚
System.Data.SqlClient.SqlBulkCopy sqlbulk = new System.Data.SqlClient.SqlBulkCopy(ConnData, SqlBulkCopyOptions.UseInternalTransaction);
sqlbulk.SqlRowsCopied +=
new SqlRowsCopiedEventHandler(OnRowsCopied); //订阅复制完成后的方法,参数是 sqlbulk.NotifyAfter的值
sqlbulk.NotifyAfter = dt.Rows.Count;
//目标数据库表名
sqlbulk.DestinationTableName = "pa_ScheduleShadow";
//数据集字段索引与数据库字段索引映射
sqlbulk.ColumnMappings.Add(0, "ScheduleKey");
sqlbulk.ColumnMappings.Add(1, "AdminUserKey");
sqlbulk.ColumnMappings.Add(2, "ScheduleRuleKey");
sqlbulk.ColumnMappings.Add(3, "eBayProfileKey");
sqlbulk.ColumnMappings.Add(4, "LaunchTimeSite");
sqlbulk.ColumnMappings.Add(5, "CreationDate");
//导入
sqlbulk.WriteToServer(dt);
sqlbulk.Close();
return true;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
dt.Dispose();
}
}
//复制完成后的处理事件
private void OnRowsCopied(object sender, SqlRowsCopiedEventArgs args)
{
lblCounter.Text += args.RowsCopied.ToString() + " 条记录已导入";
TimeSpan copyTime = DateTime.Now - startTime;
lblCounter.Text += " 花费时间:" + copyTime.Seconds.ToString() + "." +
copyTime.Milliseconds.ToString() + " 秒";
}
#endregion
相关文章推荐
- linux上导入txt文件数据到mysql自己写的例子
- SQLT导入测试数据,及SQL Profile的使用 推荐
- 使用Navicat导入导出表的数据做测试(转载)
- ADOquery导入EXCEL表数据例子
- Dynamics AX 2012 R3 Demo 安装与配置 - 导入测试数据 (Step 4)
- Caffe:Win10下测试自己制作的数据集
- 我的架构演化笔记 13:自己动手写Nutch-index插件导入数据到MongoDB
- HBase数据迁移(3)-自己编写MapReduce Job导入数据
- 深度学习文章5:使用caffe对自己的图像数据进行训练并测试
- Idea开发工具 导入spring_boot测试项目例子报错
- 4.TPC-C测试工具——导入TPCC数据
- 自己测试,在yii2中实现PHPExcel数据导出实例
- 测试必备技能系列1 :通过mysql命令进行脚本数据导入
- ssd训练自己的数据(物体检测),并测试模型
- 基于QTP的自动化测试留下一份向数据库自动导入测试数据的VBS脚本
- Tensorflow 训练自己的数据集将数据直接导入到内存
- POI 导入excel数据自己主动封装成model对象--代码分析
- HBase数据迁移(3)-自己编写MapReduce Job导入数据 .
- windows 训练、微调caffenet 训练测试自己的数据
- SQLLoader1(简单测试,以控制文件方式导入数据)