我已经编写了使用OPENROWSET从目录读取DBF文件的代码,效果很好。但是,我的客户端有多个我不知道其架构的文件,因此需要将它们存储在临时数据库中。我无法使用SSIS(客户选项),并且正在使T-SQL脚本在所需的数据库上聚合多个DBF文件。
我试图创建的一种解决方法是读取多个文件路径并将每个文件存储为新表。
为此,我正在使用以下代码。首先,我为要导入的所有所需文件打印所有完整路径:
Declare @param as varchar(100)
Declare @Path as varchar(1000)
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'AllowInProcess' , 1;
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'DynamicParameters' , 1;
Set @Path = 'C:\Users\'
Set @param = 'dir /B ' + @Path + '*.dbf'
Create table #dbfiles
(
dbfFile varchar(300)
)
Insert into #dbfiles
Exec master..xp_cmdshell @param
Update #dbfiles Set dbfFile = @Path + dbfFile
SELECT * FROM #dbfiles
GO
现在我的问题是我试图使用OPENROWSET函数从#dbFiles中读取所有路径
SELECT *
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','dBASE IV;Database=@Path','SELECT * FROM #dbfiles')
但是,当我执行以上代码时,出现以下错误:
准备查询“ SELECT * FROM #dbfiles”以针对链接服务器“(null)”的OLE DB访问接口“ Microsoft.ACE.OLEDB.12.0”执行时发生错误。
是否可以对多个文件执行OPENROWSET?