SqlBulk
来源:互联网 发布:文科博士 知乎 编辑:程序博客网 时间:2024/06/07 00:46
功效:批量高效插入数据,较之SQL语句的方式快至少25倍以上。
适用范围:SqlBulkCopy 类只能用于向 SQL Server 表中写入数据。 但是,数据源不限于 SQL Server;可以使用任何数据源,只要数据可以加载到 DataTable 实例或使用 IDataReader 实例读取即可。
原理:Microsoft SQL Server 包含名为 bcp 的常用命令行应用程序,用于快速将大文件批量复制到 SQL Server 数据库的表或视图中。 使用 SqlBulkCopy 类可以编写提供类似功能的托管代码解决方案。
使用 SqlBulkCopy 类可以执行下列操作:
单次批量复制操作
多次批量复制操作
事务中的批量复制操作
注:
在使用 .NET Framework 1.1 版或更低版本时(不支持 SqlBulkCopy 类),可以使用 SqlCommand 对象执行 SQL Server Transact-SQL BULK INSERT 语句。
事例:
private static long SqlBulkCopyInsert()
{
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
DataTable dataTable = GetTableSchema();
string passportKey;
for (int i = 0; i < count; i++)
{
passportKey = Guid.NewGuid().ToString();
DataRow dataRow = dataTable.NewRow();
dataRow[0] = passportKey;
dataTable.Rows.Add(dataRow);
}
SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(connectionString);
sqlBulkCopy.DestinationTableName = "Passport";
sqlBulkCopy.BatchSize = dataTable.Rows.Count;
SqlConnection sqlConnection = new SqlConnection(connectionString);
sqlConnection.Open();
if (dataTable!=null && dataTable.Rows.Count!=0)
{
sqlBulkCopy.WriteToServer(dataTable);
}
sqlBulkCopy.Close();
sqlConnection.Close();
stopwatch.Stop();
return stopwatch.ElapsedMilliseconds;
}
这是一个新建DataTable进行BulkCopy的事例,实际应用中,如果是从一个数据源得到另一个,使用数据适配器(DataAdapter)填充(Fill)的DataTable更方便一些,至少Schema就现成的了。
- SqlBulk
- Excel 导入(sqlbulk.ColumnMappings + 创建数据表)
- SendKeys.Send()输入中文
- vs2010中臃肿的ipch和sdf文件
- org.springframework.beans.factory.BeanCreationException: 某个错误
- 快毕业了
- SMTP协议RFC821中文文档
- SqlBulk
- Spring Security 2 配置精讲.
- VS2003/VS2005 常用快捷键
- Android简明开发教程二十一:访问Internet 绘制在线地图
- Android简明开发教程二十二:使用资源Resources
- POP3协议RFC1939中文文档
- Android简明开发教程二十三:发布应用
- 95%的设计师在为10%的人设计
- Android简明开发教程二十四:总结及示例代码下载