[求助] 批量导入多个mdb文件中表名不同结构相同的数据到sql中
大家好,我最近遇到一个十分棘手的问题,请各位不吝赐教!我的一个文件夹内有很多的mdb文件,且很有规律,都是以R开头,后面跟年月日,如:R091028,表示为2009年10月28日自动备份的数据库。打开R091028文件后,发现有“DK091028”,“R0091028”,“R1091028”,“Ww091028”四张表,这四张表的后六位与文件名的后六位相同(当然,除此四张表与文件名有相同之外,其他表的表名均没有这种情况)。现在要将文件夹内所有mdb文件中的“DK091028”,“R0091028”,“R1091028”,“Ww091028”分别导入到sql中的“DK”、“R0”、“R1”、“Ww”中。曾经用如下一段sql语句导过相同表名的mdb文件:
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.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 'G:\审计项目\茶陵二中经责审计(2013)\财务数据\伙食账\R1','kabye'
但这次不同,以上四张表是随着日期的不同表名也不变得不同,实在没招。所以,请大家一定帮帮忙!