Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 5926|回复: 5

[已解决]蛋痛的EXCEL2007导入SQL问题,困扰了一个月;

[复制链接]
发表于 2011-11-7 13:42 | 显示全部楼层 |阅读模式
代码:
——————————————————————————————————————————————————————————
Sub 导入SQL()
Dim cnn As New ADODB.Connection
Dim rs As New ADODB.Recordset
lianjie = "provider=sqloledb;database=test;uid=sa;pwd=30687724;data source=127.0.0.1,1433;"
cnn.Open lianjie
方法一:st = "select  * into [导进123]  from opendatasource('Microsoft.Ace.OleDB.12.0','data source=d:\123\10w.xlsx;extended properties=excel 12.0')...[sheet1$];"
方法二:st = "insert 九月 select *  from opendatasource('Microsoft.Ace.OleDB.12.0','data source=d:\123\10w.xlsx;extended properties=excel 12.0')...[sheet1$];"
cnn.Execute st
End Sub
——————————————————————————————————————————————————————————————
问题:
导入的数据量很大,一个表有100W,所以用2007才行。以上语句2003是没有问题的,但2007就出错
提示1:“Microsoft.Ace.OleDB.12.0'出错,未给出错误信息”
提示2:一直通行下去,没有反应,直接卡死。

注:导入2007小数据是没有问题的,比如几千行这样。所以代码应该不会有错。Microsoft.Ace.OleDB.12.0组件我是装了的,没有问题,SQL功能也是开了的。因为2003都可又导入嘛。

麻烦那位提点一下,或提供点其它导入的方法,主要我是批量导入,量比较大,所以才写程序。。


最佳答案
2011-11-8 12:02
txt和xlsx文件都可以通过SQLServer自带的工具手工导入。我想这个导入的速度是最快的

对于你讲的100W条数据,我想理所当然会花很长时间,我想把你的数据复制到整个Excel,立即崩溃了。

所以我想你首先是要能导到数据库中,然后才找到省时间的办法。你说你10W条数据5分钟,100W差不多就50分钟,你可以试一下手工导入100W条花多长时间。如果时间短也许可以想办法把手工的导入写成代码。

我一直想你可以用普通的一条一个增加记录的方式写到数据库中,当然我也不知道结果会怎样。但我想如果时间长的话值的一试。用DAO(我猜DAO更快)
发表于 2011-11-8 12:02 | 显示全部楼层    本楼为最佳答案   
txt和xlsx文件都可以通过SQLServer自带的工具手工导入。我想这个导入的速度是最快的

对于你讲的100W条数据,我想理所当然会花很长时间,我想把你的数据复制到整个Excel,立即崩溃了。

所以我想你首先是要能导到数据库中,然后才找到省时间的办法。你说你10W条数据5分钟,100W差不多就50分钟,你可以试一下手工导入100W条花多长时间。如果时间短也许可以想办法把手工的导入写成代码。

我一直想你可以用普通的一条一个增加记录的方式写到数据库中,当然我也不知道结果会怎样。但我想如果时间长的话值的一试。用DAO(我猜DAO更快)
回复

使用道具 举报

发表于 2011-11-7 16:33 | 显示全部楼层
1. 你可以考虑使用工具导入数据库的方法,比如SQL里有(我没试出来),另外可以考虑先导入Access再导入SQLServer
2. 你传个样表上来,然后才好试
回复

使用道具 举报

 楼主| 发表于 2011-11-7 20:43 | 显示全部楼层
xpw6061 发表于 2011-11-7 20:09
SQL的版本是哪个?如果是2005的话,打SQL的升级补丁,没有打升级补丁的话,导入EXCEL2007数据的会出错,试验的办 ...

我是SQL2008板本的。

手动导入没有问题。而且小文件可又导入。

不知道你有没有什么好方法呢?
回复

使用道具 举报

发表于 2011-11-7 20:09 | 显示全部楼层

RE: 蛋痛的EXCEL2007导入SQL问题,困扰了一个月;

本帖最后由 xpw6061 于 2011-11-7 20:20 编辑

SQL的版本是哪个?如果是2005的话,打SQL的升级补丁,没有打升级补丁的话,导入EXCEL2007数据的会出错,试验的办法是在SQL里,点相应的数据库,右键点任务,点导入数据,再点数据源,用手工方式导入,如果成功导入的话,说明SQL支持2007数据导入,用VBA导入也没问题,如果不成功的话,说明SQL要打补丁才能支持EXCEL2007,SQL相应的版本都有SP补丁包
查看SQL当前版本的命令是: select @@version 333.jpg

333.jpg
回复

使用道具 举报

 楼主| 发表于 2011-11-7 20:01 | 显示全部楼层
吕?布 发表于 2011-11-7 16:33
1. 你可以考虑使用工具导入数据库的方法,比如SQL里有(我没试出来),另外可以考虑先导入Access再导入SQLSer ...

样本.rar (11.33 KB, 下载次数: 23)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-28 10:15 , Processed in 0.246446 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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