C# SqlBulkCopy 大量数据导入到数据库
2024-09-04 04:33:47
之前写了一篇C# 直接使用sql语句对数据库操作 (cmd.ExecuteNonQuery)的文章
这是针对数据量不大的操作,换句话说,效率太低,所以在此介绍一个效率高的、能大批量导入到数据库的方法
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
函数原型
public void WriteToServer(DataTable table);
不难看出这个函数需要的是DataTable的数据类型
正文开始:
需要using的东西
using System.Data.SqlClient;//SqlBulkCopy
using System.Configuration;//ConfigurationManager
using System.Data;//Datatable
在app.config中添加connectionstring
<connectionStrings>
<add name="connString" connectionString="server=sk**ei**l0*;database=V*Q;integrated security=true"/>
</connectionStrings>
就插个代码吧 没什么讲的 注释都有
static void Main(string[] args)
{
DataTable datasource = new DataTable();//数据源,这边没有给它数据源,将就看吧 string connString = ConfigurationManager.ConnectionStrings["connString"].ToString();//config
SqlConnection conn = new SqlConnection(connString);
conn.Open();
SqlBulkCopy sqlbulkcopy = new SqlBulkCopy(conn); sqlbulkcopy.DestinationTableName = "";//设置数据库表名
sqlbulkcopy.BulkCopyTimeout = ;//timeout,数据量大的话就需要设置一下,具体视情况而定 try
{
sqlbulkcopy.WriteToServer(datasource);//写入数据库
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
finally
{
sqlbulkcopy.Close();
conn.Close();//关
}
}
另一种写法
static void using_(DataTable datasource,string tablename) {
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["connString"].ToString()))
{
conn.Open();
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(conn))
{
bulkCopy.DestinationTableName = tablename;//table name
bulkCopy.BatchSize = datasource.Rows.Count;
try
{
bulkCopy.WriteToServer(datasource);//写入数据库
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
finally
{
bulkCopy.Close();
conn.Close();//关
}
}
}
}
最新文章
- EF INNER JOIN,LEFT JOIN,GROUP JOIN
- 解决firefox和IE9对icon font字体的跨域访问问题
- 【SDOI2010题集整合】BZOJ1922~1927&;1941&;1951&;1952&;1972&;1974&;1975
- [LeetCode] Binary Tree Preorder Traversal
- 【KVM安装】在Centos6.8中安装KVM
- Java中的栈:java.util.Stack类
- Java中ArrayList源码分析
- mysql中enum的用法
- WebView js 调用Java本地方法
- Stream 基础和常用
- LIB文件和DLL文件的作用
- HTML - Textarea - 空格的问题解决方式
- linux c socket programming
- 第三十二节,datetime时间模块
- 幂次法则power law
- VS编译LESS插件
- day5 列表
- 转 -- 详解python的super()的作用和原理
- vue系列之Vue-cli
- 使用函数接口和枚举实现配置式编程(Java与Scala实现)