4 messaggi dal 29 novembre 2006
Ciao a tutti, ho letto nel forum che è possibile importare i dati presenti in un file excel in una tabella sql tramite l’istruzione OPENROWSET.

Sto provando con la seguente sintassi ma ho un errore che riporto di seguito:



SELECT *
INTO demomarchi
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=C:\Marchi.xls',
'SELECT * FROM Foglio1$')

Server: messaggio 7321, livello 16, stato 2, riga 1

Si è verificato un errore durante la preparazione di una query per l'esecuzione nel provider OLE DB 'Microsoft.Jet.OLEDB.4.0'.
[OLE/DB provider returned message: Errore di sintassi nella proposizione FROM.]
Traccia di errore OLE DB [OLE/DB Provider 'Microsoft.Jet.OLEDB.4.0' ICommandPrepare::Prepare returned 0x80040e14].

Da cosa può dipendere? Sto utilizzando Excel 2003 e SQL 2000.

Grazie,
Milena Calabrese
salve Milena
milena78 wrote:
Ciao a tutti, ho letto nel forum che è possibile importare i dati presenti in un file excel in una tabella sql tramite
l’istruzione OPENROWSET.

Sto provando con la seguente sintassi ma ho un errore che riporto di seguito:



SELECT *
INTO demomarchi
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0 atabase=C:\Marchi.xls',
'SELECT * FROM Foglio1$')

Server: messaggio 7321, livello 16, stato 2, riga 1

Si è verificato un errore durante la preparazione di una query per l'esecuzione nel provider OLE DB 'Microsoft.Jet.OLEDB.4.0'. [OLE/DB provider returned message: Errore di sintassi nella proposizione FROM.]
Traccia di errore OLE DB [OLE/DB Provider 'Microsoft.Jet.OLEDB.4.0' ICommandPrepare: repare returned 0x80040e14].

Da cosa può dipendere? Sto utilizzando Excel 2003 e SQL 2000.

verifica la sintassi del comando, ad esempio
http://support.microsoft.com/kb/321686
e prova a chiudere il nome del "foglio" tra parentesi quadre tipo
'SELECT * FROM [Foglio1$]')

saluti

Andrea Montanari (Microsoft MVP - SQL Server)
http://www.asql.biz - http://italy.mvps.org
http://www.hotelsole.com - http://www.hotelsolericcione.de
4 messaggi dal 29 novembre 2006
Veramente la sintassi l'ho copiata proprio da quel sito, e se metto le parentesi quadre non mi riconosce il nome del foglio. Cos'altro devo verificare?
salve
milena78 wrote:
Veramente la sintassi l'ho copiata proprio da quel sito, e se metto le parentesi quadre non mi riconosce il nome del foglio. Cos'altro devo verificare?



prova a definire un linked server, similarmente a
DECLARE @datasrc nvarchar(4000);
DECLARE @provstr nvarchar(4000);

SET @datasrc = 'c:\Test.xls';
SET @provstr = 'Excel 8.0;HDR=NO;IMEX=1'
EXEC [master].[dbo].[sp_addlinkedserver]
'ExcelFile', 'Excel', 'Microsoft.Jet.OLEDB.4.0', @datasrc, '', @provstr , '';
GO
SELECT *
FROM ExcelFile...Foglio1$;

EXEC master..sp_dropserver 'ExcelFile', 'droplogins';
GO

saluti

Andrea Montanari (Microsoft MVP - SQL Server)
http://www.asql.biz - http://italy.mvps.org
http://www.hotelsole.com - http://www.hotelsolericcione.de
proverei anche OPENQUERY..

saluti

Andrea Montanari (Microsoft MVP - SQL Server)
http://www.asql.biz - http://italy.mvps.org
http://www.hotelsole.com - http://www.hotelsolericcione.de

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.