Foxtable(狐表)用户栏目专家坐堂 → [总结分享]sqlBulkCopy批量插入大量数据到Sql数据库 (批量导入、快速导入、1秒1w行、快速Excel导入)


  共有97221人关注过本帖树形打印复制链接

主题:[总结分享]sqlBulkCopy批量插入大量数据到Sql数据库 (批量导入、快速导入、1秒1w行、快速Excel导入)

帅哥哟,离线,有人找我吗?
chen37280600
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1278 积分:7948 威望:0 精华:4 注册:2017/12/31 14:53:00
[总结分享]sqlBulkCopy批量插入大量数据到Sql数据库 (批量导入、快速导入、1秒1w行、快速Excel导入)  发帖心情 Post By:2020/3/13 11:56:00 [显示全部帖子]

(快速浏览杰哥分享过的所有经验汇总,点击跳转


在论坛看到有人问这个sqlBulkCopy,就试一下,顺便总结一下使用sqlBulkCopy批量插入数据。这个只能插入不能修改
插上1w行以上级别时,特别好用。

以下代码,适合于把本地表,大量插入到数据库的同一个表。
如果不是同一个表的导入,推荐你自己看懂代码,稍微修改

Dim dt As DataTable = DataTables("UpdateLog") '修改为你的表
Dim conStr As String = "server=xxx,1433;uid=xxx;pwd=xxx;database=MH1WebDB" '改为自己数据库的连接字符串,注意跟狐表的数据库字符串不同,不能拿来用

Dim tran As System.Data.SqlClient.SqlTransaction
Dim conn As new System.Data.SqlClient.SqlConnection(conStr)

以下内容只有回复后才可以浏览

注意事项:
1.原始表和目标表,要求表结构完全一样,为了防止掉坑,我推荐直接用SqlCommand对着目标表,查询一个空白的临时结构表出来,然后利用这个结构表addnew,然后插入数据库,最后扔掉这个临时表
这种做法,就能在BS开发里,进入异步进行大量插入。一般批量插入都是耗时的,都是开异步,开异步就不能利用主线程的表,得用我这个思路

2.数据量越多越体现优势,在0.5-3万时没什么感觉,在10-100万行时,基本能得到1秒1w+行的速度

3.导入速度,软件层会受 主键/索引/触发器/外键 等影响,硬件层会受 网络带宽 / 服务器I/O / 服务器硬盘读取/写入等影响,所以每个人效果都不同,自行测试


此主题相关图片如下:1.png
按此在新窗口浏览图片


此主题相关图片如下:2.png
按此在新窗口浏览图片


此主题相关图片如下:3.png
按此在新窗口浏览图片


===============================================================
顺便总结以前分享过的帖子,方便大家学习

联系QQ:2385350359

免费产品:

经验分享:




















[此贴子已经被作者于2024/6/5 18:09:59编辑过]

 回到顶部