Kann ich dynamisches SQL mit Parametern erstellen? @FilePath
und @WorksheetName
für die Abfrage unten OHNE vorher eine temporäre Tabelle erstellen? Ich kann die Tabelle nicht erstellen, da ich die Anzahl der Spalten in der Datei nicht kenne.
SELECT *
INTO #OLD_REPORT
FROM OPENROWSET("Microsoft.ACE.OLEDB.12.0", "Excel 12.0;
Database=C:OLD_REPORT.xlsx;HDR=YES;IMEX=1",
"SELECT * FROM [Worksheet1$]")
Etwas wie
declare @sql varchar(2000)
set @sql = "SELECT ... INTO #OLD_REPORT ..." + @FilePath + "..." + @WorksheetName + "..."
EXECUTE(@sql)
funktioniert nicht wegen der #OLD_REPORT
Tabelle (kann nicht laufen SELECT * FROM #OLD_REPORT
)
Antworten:
0 für die Antwort № 1Sie können es nicht tun. Wenn Sie nicht wissen, was von dieser Datei erwartet wird, wie SQL Server das wissen wird?
Sie können verwenden INTO
Syntax zum Erstellen einer Tabelle, wenn Sie alle Spaltennamen in angeben select
Erklärung.
Ich habe überlegt, wie ich dir helfen kann.
Sie können versuchen, CSV-Dateien anstelle von Excel zu verwenden. Dann können Sie die gesamte Zeile laden und dann die Anzahl der Spalten und Spaltennamen bestimmen und temporäre Tabellen dynamisch erstellen und diese füllen.
In .NET ist dies jedoch möglicherweise einfacher.