/ / Parametriere dynamisches SQL mit temporärer Tabelle in - sql-server, tsql

Parametrisieren Sie dynamisches SQL mit temporärer Tabelle im Inneren - sql-server, tsql

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 № 1

Sie 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.