将指定文件夹下结构相同的ACCESS文件内指定的表批量导入到SQL数据库中指定的表

本文提供了一种使用存储过程的方法,能够将指定文件夹下所有结构相同的Access文件中的指定表批量导入到SQL Server数据库的相应表中。此过程包括创建临时表、遍历指定目录下的所有Access文件、创建及执行导入命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题贴:http://topic.youkuaiyun.com/u/20100511/18/85e96b68-9c5b-4d08-8f5f-d4ae685580a3.html?seed=868821069&r=65351262#r_65351262

--------------------------------------------------------------------------

--  Author : htl258(Tony)

--  Date   : 2010-05-11 18:29: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:将指定文件夹下结构相同的ACCESS文件内指定的表批量导入到SQL数据库中指定的表

--------------------------------------------------------------------------

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) --ACCESS要导入的表名

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.JET.OLEDB.4.0'', '''+@DIR+[filename]+''';''Admin'';'''','+@tabname+')'

    FROM #t 

    EXEC(@S)

END

--开始导入目录下的文件

SET @S = ''

SELECT @S = @S + 'INSERT '+@tabname+' SELECT * FROM OPENROWSET(

    ''MICROSOFT.JET.OLEDB.4.0'', '''+@DIR+[filename]+''';''Admin'';'''','+@tabname+')' 

FROM #t     

EXEC(@S)

SET NOCOUNT OFF

GO

--调用示例:

EXEC Sp_InputAccesstoSQL 'D:/files','UserInfo'

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值