2017-09-20 21 views
2

ich bin meine Daten aus Excel-Datei zu SQL-Datenbank unter Verwendung von OPENROWSET importieren Folgende sind meine BefehlDatenimport Fehler in OPENROWSET mit variabler Pfad

declare @path varchar(100)='E:\11.08.2017 .xlsx;' 

SELECT * into palwal12 FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0; Database='[email protected]+' HDR=YES; IMEX=1', 'SELECT * FROM [sheet1$]')

i erfolgreich Daten in die Tabelle einfügen, während einfache Verwendung Abfrage. Aber wenn ich den Variablenpfad verwenden möchte, um Daten einzufügen, dann habe ich einen Fehler wie falsche Syntax in der Nähe von '+'. Ich dachte, meine Syntax für die Verwendung der Pfadvariablen ist falsch. jemand könnte mir bitte helfen.

Antwort

1

Sie können keine Variablen in Openrowset-Parametern verwenden, sie müssen String-Literale sein. Was Sie tun können, ist eine dynamische SQL erstellen und dann ausführen. Beispiel:

Declare @sql varchar(max) = your sql 
exec(@sql) 
+1

thanx @jayvee mit Hilfe Ihrer Antwort schließlich ich meine Abfrage ausführen – user8205502

+0

@ user8205502 https : //meta.stackexchange.com/a/5235/289619 – 0m3r

0

als @jayvee mir vorgeschlagen habe ich eine dynamische SQL- und meine Abfrage ausführen, wie folgend

`DECLARE @sql varchar(MAX); 
DECLARE @path varchar(255); 
SET @path = 'E:\11.08.2017 .xlsx;' 
SET @sql = 'SELECT * INTO ravan FROM OPENROWSET(''Microsoft.ACE.OLEDB.12.0'', 
    ''Excel 12.0; Database='[email protected]+' HDR=YES; IMEX=1'', 
    ''SELECT * FROM [sheet1$]'')'; 

EXEC (@sql)