黑马程序员技术交流社区
标题:
如何批量的向数据库中写数据
[打印本页]
作者:
心灵苦旅
时间:
2014-3-25 21:07
标题:
如何批量的向数据库中写数据
本帖最后由 心灵苦旅 于 2014-3-27 17:05 编辑
当需要向数据库中插入大量数据时,比如几十万条,如果一条一条地插入的话,非常慢,一般会用掉几分钟。
有没有直接想数据库中批量插入数据的方法,依次提高插入数据的效率呢?
作者:
zou5268237
时间:
2014-3-25 21:32
SQLBulkCopy,用于数据库之间大批量的数据传递。通常用于新,旧数据库之间数据的更新。即使表结构完全不同,也可以通过字段间的对应关系,顺利的将数据导过来。
SqlConnection conn = new SqlConnection(Connstring);
conn.Open();
using (SqlBulkCopy sqlBC = new SqlBulkCopy(conn))
{
//设置一个批,写入多少条记录
sqlBC.BatchSize = 100000;
//设置逾时的秒数
sqlBC.BulkCopyTimeout = 60;
//设置 NotifyAfter 属性,以便在每拷贝 10000 条记录至数据表后,呼叫事件处理函数
sqlBC.NotifyAfter = 10000;
//sqlBC.SqlRowsCopied += new SqlRowsCopiedEventHandler(OnSqlRowsCopied);
sqlBC.DestinationTableName = "dbo.A_Test";
//对应数据行
sqlBC.ColumnMappings.Add("ABC", "ABC");
sqlBC.ColumnMappings.Add("EFG", "EFG");
sqlBC.ColumnMappings.Add("TEST", "TEST");
//开始写入
sqlBC.WriteToServer(db);
}
conn.Dispose();
复制代码
作者:
心灵苦旅
时间:
2014-3-27 17:03
zou5268237 发表于 2014-3-25 21:32
SQLBulkCopy,用于数据库之间大批量的数据传递。通常用于新,旧数据库之间数据的更新。即使表结构完全不同 ...
有用,谢谢了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2