2017-10-14 82 views
0

我運行下面的命令選擇多張文件從文件夾,日期到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文件導入數據?

請幫我

+0

是的,這是可能的,我想你應該從路徑中刪除* char。 –

+0

沒問題仍然存在 – user8205502

回答

0

運行SQL Server Management StudioRun 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 
+0

我試過但沒有影響,我的實際路徑是E:\ BILL PRINT \ RAVI \,並且此文件夾名稱中有兩個文件是currency.xlsx和currency1.xlsx是否存在這些文件的任何問題。 – user8205502

+0

只有一個文件,你可以同時打開,嘗試'E:\ BILL PRINT \ RAVI \ currency.xlsx' –

+0

好像我運行錯誤的命令,然後我想從一個文件夾中同時導入一個表中的所有這些文件。你有什麼建議我怎麼能做到這一點。 – user8205502