首页 > 代码库 > 将ACCESS数据批量导入SQL SERVER
将ACCESS数据批量导入SQL SERVER
代码:
IF OBJECT_ID(‘Sp_InputAccesstoSQL‘) IS NOT NULL DROP PROC Sp_InputAccesstoSQL GO CREATE PROC Sp_InputAccesstoSQL @dir NVARCHAR(100),--ACCESS文件存放路径:如D:\Files @tabname NVARCHAR(50) --定义导入到数据库中的表名,如果存在就不需要创建 AS SET NOCOUNT ON DECLARE @cmd NVARCHAR(1000) CREATE TABLE #t([filename] NVARCHAR(1000)) IF RIGHT(@dir,1)<>‘\‘ SET @dir=@dir+‘\‘ SET @cmd = N‘dir "‘ + @dir + ‘*.mdb" /B‘ INSERT #t EXEC master..xp_cmdshell @cmd DELETE #t WHERE [filename] IS NULL --在SQL中创建表: DECLARE @S nvarchar(MAX) IF OBJECT_ID(@tabname) IS NULL BEGIN SELECT TOP 1 @S=‘SELECT TOP 0 * INTO ‘+ @tabname+‘ FROM OPENROWSET( ‘‘Microsoft.ACE.OLEDB.12.0‘‘, ‘‘‘+@DIR+[filename]+‘‘‘;‘‘Admin‘‘;‘‘‘‘,‘+@tabname+‘)‘ FROM #t EXEC(@S) END --开始导入目录下的文件 SET @S = ‘‘ SELECT @S = @S + ‘INSERT ‘+@tabname+‘ SELECT * FROM OPENROWSET( ‘‘Microsoft.ACE.OLEDB.12.0‘‘, ‘‘‘+@DIR+[filename]+‘‘‘;‘‘Admin‘‘;‘‘‘‘,‘+@tabname+‘)‘ FROM #t EXEC(@S) SET NOCOUNT OFF GO --调用: EXEC Sp_InputAccesstoSQL ‘F:\test‘,‘table_name‘
注意:根据系统安装access版本的不同,Microsoft.ACE.OLEDB.12.0可能替换为这个Microsoft.Jet.OLEDB.4.0 。
FAQ:
Q1: SQL Server 阻止了对组件 ‘xp_cmdshell‘ 的 过程 ‘sys.xp_cmdshell‘ 的访问...
A1: 执行以下sql语句:
sp_configure ‘show advanced options‘,1 reconfigure go sp_configure ‘xp_cmdshell‘,1 reconfigure go
Q2: SQL Server 阻止了对组件 ‘Ad Hoc Distributed Queries‘ 的访问...
A2: 执行以下sql语句:
EXEC sp_configure‘Ad Hoc Distributed Queries‘,1; RECONFIGURE; GO
参考:一、二、三
*** walker ***
本文出自 “walker的流水账” 博客,请务必保留此出处http://walkerqt.blog.51cto.com/1310630/1430990
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。