细说EXCEL的数据导入问题
来源:互联网 发布:mac虚拟机专用xp系统 编辑:程序博客网 时间:2024/06/05 04:59
这两天在做一个数据上传的功能,是根据一个工单号,自动生成一定数量的条码,然后上传到数据库中。由于数量太多(达到上万),用循环插入时,老是说数据库连接超时,后来实用ADO.NET的连接池功能,还是出现连接超时的问题。自己在这方面的知识有限,但时间紧迫,只好另寻它法。于是找到用SQL语句把EXCEL中的数据导入数据库中的方法。过程是现在EXCEL里面生成条码,工单号信息,然后上传到数据库中去。具体方法如下(一下是收集兼总结):
第一步:先开启数据库权限服务
在查询分析器里,直接写SQL语句
EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE/ RECONFIGURE WITH OVERRIDE
备注:RECONFIGURE 命令后,需要重启SqlServer服务后命令才能生效,而 RECONFIGURE WITH OVERRIDE命令,则命令立即生效。故若不想麻烦,建议使用RECONFIGURE WITH OVERRIDE命令。
如果是导入数据到现有表,则采用
INSERT INTO 表 SELECT * FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 5.0;HDR=YES;DATABASE=c:/test.xls',sheet1$)的形式
注意:“c:/test.xls”必须与数据库服务器在同一个机器上,命令才能生效。否则会出现“OLE DB 提供程序 'Microsoft.Jet.OLEDB.4.0' 不包含表 'a1'。该表可能不存在,或当前用户没有使用该表的权限。”错误提示。
如果是导入数据并新增表,则采用
SELECT * INTO 表 FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 5.0;HDR=YES;DATABASE=c:/test.xls',sheet1$)的形式。
以上语句是将EXCEL文件里SHEET1工作表中所有的列都读进来,如果只想导部分列,可以
INSERT INTO 表(a1,a2,a3) SELECT a1,a2,a3 FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 5.0;HDR=YES;DATABASE=c:/test.xls',sheet1$)
其实可以将OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 5.0;HDR=YES;DATABASE=c:/test.xls',sheet1$)当成一个表,例如我就写过这样一个句子:
INSERT INTO eval_channel_employee(channel,employee_id)
SELECT CASE a.渠道 WHEN 'DIY' THEN 1 WHEN 'RDC' THEN 0 WHEN 'KCM' THEN 2 ELSE 3 END
,b.id FROM
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 5.0;HDR=YES;DATABASE=c:/temp/name.xls',sheet1$) AS a,pers_employee b
WHERE a.员工编码=b.code
上面是把EXCEL数据导入到数据库中去的详细语法及我碰到的问题。但我在最后还是碰到一个问题:“找不到 Microsoft.Jet.Oledb.4.0 程序“,这个问题与下面这个问题相似:
vs2005开发aspx程序(dot net2.0)、访问Acess数据库时候出现错误 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序。 一下是解决这一问题过程,贴出来让有需要的朋友参考参考 1.检查链接字符串书写是否正确,"Provider=Microsoft.Jet.Oledb.4.0;Data Source=数据库路径" 拼写无误,问题仍存在 2.注册组件 regsvr32 msjetoledb40.dll 问题依然存在 3.重新安装MDAC28.exe,无奈问题还存在。 网上关于这个错误的解决办法一般就以上三种,那我的问题出现在哪里呢?会不会是权限问题? 4.打开注册表(开始菜单--》运行--》regedit),搜索“Microsoft.Jet.Oledb.4.0”,查看权限,发现未给iis_wpg读取权限。 于是给“Microsoft.Jet.Oledb.4.0”项加上Everyone读取权限。 刷新一下页面,居然OK了。。呵呵。。 后话:不给“Microsoft.Jet.Oledb.4.0”项加上Everyone读取权限,只加iis_wpg读取权限情况是否能行,还未测试。 上面这一段是我在查找我遇到的问题时找到的文章。不过看看这篇文章后面的评论,好像好多人都没有解决问题。但我还是准备按上面文章中的说法去解决问题,就在这个时候,我的问题突然好了,后来在我反复试验发现,只要把“任务面板控制器”里的EXCEL进程关掉就好了。
- 细说EXCEL的数据导入问题
- 关于Excel数据导入Mysql的问题
- excel导入数据到sqlserver的问题
- 导入excel数据时候的问题
- excel数据导入到mysql的问题
- excel导入数据的时间格式问题
- excel导入至sql2008语句的数据导入问题
- [求助] 导入多个未打开的Excel文件数据的问题
- 初学echarts的excel数据导入遇到的小问题
- 将excel数据通过plsql导入oracle的问题
- 导入excel格式的数据
- Excel数据导入到数据库乱码问题
- Excel导入DataSet数据丢失问题!
- excel 导入文本数据乱码问题
- 导入EXCEL 时间数据为小数 问题
- mysql导入excel数据乱码问题
- 九、excel导入数据查重问题
- Excel导入的相关问题
- MSN Messager协议分析
- 在命令行(dos)下收发邮件的方法
- 解决Sql注入的类(C#版,Java版可效仿)
- How QTP identifies objects during the run session
- 博世Vidos 自动化接口调用源码
- 细说EXCEL的数据导入问题
- 编译Qt/Embedded
- 头文件问题001
- 整理了一天一夜的java面试题
- “在验证发生前无法调用 Page.IsValid”问题的由来(轉)
- StandingWave2应用一例:使用AS3播放WAV文件
- 网页常用技巧
- Servlet 线程安全
- SSH2框架--使用泛型DAO,JUnit测试时,如何使用事务,使用操作不真正的提交的数据库中