将指定文件夹下结构相同的EXCEL文件(支持2003和2007版本)批量导入到SQL数据库中指定的表
- SQL code
---------------------------------------- Author : htl258(Tony)-- Date : 2010-04-08 20:09:45-- Version:Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86) -- Jul 9 2008 14:43:34 -- Copyright (c) 1988-2008 Microsoft Corporation-- Developer Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 2)-- Subject:将指定文件夹下结构相同的EXCEL文件(支持2003和2007版本)批量导入到SQL数据库中指定的表------------------------------------------ 两种引擎接口说明:-- Microsoft.Jet.OLEDB.4.0(以下简称 Jet 引擎)和Microsoft.ACE.OLEDB.12.0(以下简称 ACE 引擎)。-- Jet 引擎大家都很熟悉,可以访问 Office 97-2003,但不能访问 Office 2007。-- ACE 引擎是随 Office 2007 一起发布的数据库连接组件,既可以访问 Office 2007,也可以访问 Office 97-2003。-- 另外:Microsoft.ACE.OLEDB.12.0 可以访问正在打开的 Excel 文件,而 Microsoft.Jet.OLEDB.4.0 是不可以的。-- Microsoft.ACE.OLEDB.12.0 安装文件:-- http://download.microsoft.com/download/7/0/3/703ffbcb-dc0c-4e19-b0da-1463960fdcdb/AccessDatabaseEngine.exe------------------------------------------ 附:Openrowset OpenDataSoure 以及xp_cmdshell 打开的代码:SP_CONFIGURE 'show advanced options',1GORECONFIGUREGOSP_CONFIGURE 'Ad Hoc Distributed Queries',1GORECONFIGUREGOSP_CONFIGURE 'xp_cmdshell',1GORECONFIGUREGOSP_CONFIGURE 'show advanced options',0GORECONFIGUREGO------------------------------------------以下是导入文件的存储过程代码:IF OBJECT_ID('Sp_InputExcel2007toSQL') IS NOT NULL DROP PROC Sp_InputExcel2007toSQLGOCREATE PROC Sp_InputExcel2007toSQL@dir NVARCHAR(100),--EXCEL文件存放路径:如D:\ExcelFiles@tabname NVARCHAR(50) --定义导入到数据库中的表名ASSET NOCOUNT ONCREATE TABLE #t([filename] NVARCHAR(1000))IF RIGHT(@dir,1)<>'\' SET @dir=@dir+'\' DECLARE @cmd NVARCHAR(1000) SET @cmd = N'dir "' + @dir + '*.xls*" /B'INSERT #t EXEC master..xp_cmdshell @cmdDELETE #t WHERE [filename] IS NULL--在SQL中创建表:DECLARE @S nvarchar(MAX)IF OBJECT_ID(@tabname) IS NULLBEGIN SELECT TOP 1 @S='SELECT TOP 0 * INTO '+ @tabname+' FROM OPENROWSET( ''MICROSOFT.ACE.OLEDB.12.0'', ''EXCEL 12.0;HDR=YES;IMEX=2;DATABASE='+@DIR+[filename]+''' ,''SELECT * FROM [Sheet1$]'')' FROM #t EXEC(@S)END--开始导入目录下的文件SET @S = ''SELECT @S = @S + 'INSERT '+@tabname+' SELECT * FROM OPENROWSET( ''MICROSOFT.ACE.OLEDB.12.0'', ''EXCEL 12.0;HDR=YES;IMEX=2;DATABASE='+@DIR+FILENAME+''' ,''SELECT * FROM [Sheet1$]'')' FROM #t EXEC(@S)SET NOCOUNT OFFGO--测试时先在D盘创建目录:D:\ExcelFiles--任意新建几个表结构相同的excel文件,2003或2007版本均可,并任意存入一些内容。--调用存储过程导入数据:EXEC Sp_InputExcel2007toSQL 'D:\ExcelFiles','Tony'--查询结果:SELECT * FROM Tony/*a b c d---------------------- ---------------------- ---------------------- ----------------------1 3 4 52 3 4 56 7 8 9(3 行受影响)*/
[解决办法]
SFFFFFF
[解决办法]
学习..TONY哥太强大了
[解决办法]
学习.
[解决办法]
。。。
[解决办法]
zhichi
[解决办法]
[解决办法]
来研究研究。。。。。
[解决办法]
学习.学习.学习.学习.
[解决办法]
收了。
[解决办法]
学习了
[解决办法]
顶楼主一个,太强大了
[解决办法]
顶楼主一个,太强大了
[解决办法]
牛人!
[解决办法]
学习
.
[解决办法]
呵呵 长见识了、、
QQ交流群 95626766
[解决办法]
果然很强大
[解决办法]
学习.
[解决办法]
分析的不错
[解决办法]
分析的不错
[解决办法]
分析的不错
[解决办法]
Mark 学习一下
[解决办法]
学习.学习.学习.学习.
[解决办法]
顶一个
[解决办法]
发言,表示您接受了CSDN社区的用户行为准则。
请对您的言行负责,并遵守中华人民共和国有关法律法规,尊重网上道德。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途
[解决办法]
学习
[解决办法]
果然很强大,可以参考!!!!!!!!!
[解决办法]
佩服!!
[解决办法]
顶起.强大!~
[解决办法]
学习啦,哈
[解决办法]
一直在找这方面的资料,谢谢!
[解决办法]
路过,每天回帖即可获得10分可用分!
[解决办法]
向高手学习!
[解决办法]
每天回帖即可获得10分可用分!小技巧:教您如何更快获得可用分
[解决办法]
看不懂了
[解决办法]
学习.学习.学习.学习.
[解决办法]
xue xi
[解决办法]
066A1BBE677B0D5A1BDA4F7A6A94598C22ED3088F4F3CA58CE5F
[解决办法]
学习。。。。
------解决方案--------------------
恩。分析的挺好。
[解决办法]
顶一个
[解决办法]
..................
[解决办法]
learning......
[解决办法]
en...........
[解决办法]
NX,,,,,,,,,,,,,,,
[解决办法]
学习了…………
[解决办法]
这里发言,表示您接受了CSDN社区的用户行为准则。
[解决办法]
学习。。。谢谢lz最近帮忙。
[解决办法]
[del][/del][u][/u][i][/i]是打发[align=center][/align]
[解决办法]
[解决办法]
学习 了
[解决办法]
tai hao de dong dong le ,ji fen lao hui de
[解决办法]
学习啊,太强了
[解决办法]
支持。。。这是一个不错!!!
[解决办法]
好还行 ,之比过剩及
[解决办法]
好,顶起,接分.
[解决办法]
mark mark
[解决办法]
学习学习
[解决办法]
好好学习,
[解决办法]
好~顶起来
[解决办法]
学习中。。。
[解决办法]
顶
[解决办法]
学习。。。
[解决办法]
学习………………………………
[解决办法]
厉害噢,学习了。
[解决办法]
比较不错,不过自己写起来就很麻烦
[解决办法]
厉害噢,学习了。
[解决办法]
厉害噢,学习了。
[解决办法]
学习,但是很难看明白!
[解决办法]
学习中
[解决办法]
xue xi zhong
[解决办法]
厉害 ,学学啊 啊
[解决办法]
学习了
------解决方案--------------------
[解决办法]
收藏了
[解决办法]
保存了!
[解决办法]
学习
在学习
[解决办法]
学习+收藏
[解决办法]
很好 很强大
[解决办法]
好强悍啊,收藏着。
[解决办法]
顶一个
[解决办法]
;;;;
[解决办法]
顶下,谢谢分享
[解决办法]
学习了,tony哥
[解决办法]
谢谢分享