ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1636|回复: 2

[求助] EXCEL如何批量向SQL SERVER 批量上传数据

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-10-4 12:45 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
求助! 目前每次都有接近5列,一百万行的数据需要上传到服务器。不管是用SQL自带的导入方式还是FOR循环 都是特别慢。 请教一下各位老师有没有好用的方法或者插件之类的  推荐一下 谢谢

TA的精华主题

TA的得分主题

发表于 2019-10-4 22:02 | 显示全部楼层
本帖最后由 opiona 于 2019-10-5 22:09 编辑

337楼:http://club.excelhome.net/forum. ... &page=34#pid9768940

有时候将大量Excel或Access数据保存到SQL Sever数据库很伤脑筋
十万,百万数据用循环,太慢
用VB.net写的DLL,实现VBA使用:SqlBulkCopy
本地测试:120,000条,保存需要:9秒

不想用插件,用下面的,速度会相差不少
测试了28万条数量:插件要:11秒,普通代码要:5分钟=300秒
  1. '=================================================================================================================================================批量添加
  2. 向其他数据库导入Excel:MySql
  3. StrConn = "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties='Excel 12.0;HDR=yes';Data Source =" & ThisWorkbook.FullName
  4. StrSQL = StrSQL & "Insert INTO"
  5. StrSQL = StrSQL & " [ODBC;Driver={MySql ODBC 5.3 Unicode Driver};Server=myqcloud.com;Port=7139;DB=test;UID=用户名;PWD=123;OPTION=3;].[数据表名]
  6. StrSQL = StrSQL & " Select 订单号,日期,订单人,'luoronghua' AS 编辑用户 FROM [首页$A:P]

  7. 向其他数据库导入Excel:SQL Server
  8.    Str_coon = "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties='Excel 12.0;HDR=yes';Data Source =" & ThisWorkbook.FullName     '//OFFICE2007
  9.     StrSQL = ""
  10.     StrSQL = StrSQL & "INSERT INTO "
  11.     StrSQL = StrSQL & " [ODBC;Driver={SQL Server};"                        '//在空格+[:后面是固定格式
  12.     StrSQL = StrSQL & "Server=" & StrNameServer & ";"                      '//服务器名称或地址
  13.     StrSQL = StrSQL & "Database=" & StrNameCatalog & ";"                   '//数据库名称
  14.     StrSQL = StrSQL & "UID=" & StrNameUser & ";PWD=" & StrPassWord & "]"   '//用户名,密码]
  15.     StrSQL = StrSQL & ".[" & StrNameTable & "]"                            '//.[数据库内的数据表名]
  16.     StrSQL = StrSQL & " SELECT [学号],[姓名],[专业],[语文分数],[数学分数] FROM [" & SHX.Name & "$]"    '//Excel中的数据获取
复制代码


TA的精华主题

TA的得分主题

发表于 2019-10-5 08:41 | 显示全部楼层
  1.     adoExcel_Conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source=" & ThisWorkbook.FullName

  2.     sSQL_Conn = _
  3.         "[ODBC;Driver={SQL Server};Server=" & sSQL_Server & ";Database=" & sDB_Name & ";UID=sa;PWD=" & sSQL_Password & ";]"

  4.     sSQL_Case = "Insert Into " & sSQL_Conn & "." & sDBFormName & " Select * From [数据表$]"

  5.     adoExcel_Conn.Execute sSQL_Case
复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-27 07:35 , Processed in 0.029478 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表