选择多张文件从文件夹,日期到SQL Server
我运行下面的命令选择多张文件从文件夹,日期到SQL Server
DECLARE @sql varchar(MAX);
DECLARE @path varchar(255);
SET @path = 'E:\BILL PRINT\RAVI\'
SET @sql = 'SELECT * FROM OPENROWSET(''Microsoft.ACE.OLEDB.12.0'',
''Excel 12.0; Database='[email protected]+''+'*.xlsx;'+' HDR=YES; IMEX=1'',
''SELECT * FROM [sheet1$]'')';
SELECT @sql
EXEC (@sql)
但我得到这个错误:
OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)" returned message "The Microsoft Access database engine could not find the object 'E:\BILL PRINT\RAVI*.xlsx'. Make sure the object exists and that you spell its name and the path name correctly. If 'E:\BILL PRINT\RAVI*.xlsx' is not a local object, check your network connection or contact the server administrator.".
Msg 7303, Level 16, State 1, Line 1
Cannot initialize the data source object of OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)".
是不是可以从指定的Excel文件导入数据?
请帮我
运行SQL Server Management Studio
与Run as administrator
,并再次执行脚本。
并确保您的文件路径是正确的。
只有一个文件可以同时读取。这就是为什么你的脚本应该是这样的。
DECLARE @sql varchar(MAX);
DECLARE @path varchar(255);
SET @path = 'E:\BILL PRINT\RAVI\currency.xlsx'
SET @sql = 'SELECT * FROM OPENROWSET(''Microsoft.ACE.OLEDB.12.0'',
''Excel 12.0; Database='[email protected]+''+';'+' HDR=YES; IMEX=1'',
''SELECT * FROM [sheet1$]'')';
EXEC (@sql)
如果你想读取文件夹中的所有文件。你可以使用这个脚本。获取使用的文件名xp_cmdshell
。
DECLARE @sql varchar(MAX);
DECLARE @path varchar(255);
DECLARE @fileNames TABLE (flname varchar(255))
INSERT @fileNames
EXEC xp_cmdshell 'dir E:\BILL PRINT\RAVI\*.xlsx /s/b ';
DECLARE fileCursor CURSOR FOR
SELECT flname FROM @fileNames WHERE flname is not null
OPEN fileCursor
FETCH NEXT FROM fileCursor
INTO @path
WHILE @@FETCH_STATUS = 0
BEGIN
SET @sql = 'SELECT * FROM OPENROWSET(''Microsoft.ACE.OLEDB.12.0'',
''Excel 12.0; Database='[email protected]+''+';'+' HDR=YES; IMEX=1'',
''SELECT * FROM [sheet1$]'')';
EXEC (@sql)
FETCH NEXT FROM fileCursor
INTO @path
END
我试过但没有影响,我的实际路径是E:\ BILL PRINT \ RAVI \,并且此文件夹名称中有两个文件是currency.xlsx和currency1.xlsx是否存在这些文件的任何问题。 – user8205502
只有一个文件,你可以同时打开,尝试'E:\ BILL PRINT \ RAVI \ currency.xlsx' –
好像我运行错误的命令,然后我想从一个文件夹中同时导入一个表中的所有这些文件。你有什么建议我怎么能做到这一点。 – user8205502
是的,这是可能的,我想你应该从路径中删除* char。 –
没问题仍然存在 – user8205502