Masseneinfügung von Daten mithilfe einer gespeicherten Prozedur
Sie haben eine Abfrage erstellt, die eine Masseneinfügungsaufgabe erfolgreich ausführt. Jetzt möchten Sie diese Abfrage jedoch in einer gespeicherten Prozedur kapseln, um die Wiederverwendbarkeit zu verbessern. Leider sind bei diesem Versuch Syntaxfehler aufgetreten.
Der Kern des Problems liegt in der Unfähigkeit des BULK INSERT-Befehls, einen Dateinamen als Variable zu akzeptieren. Während Ihr Code syntaktisch korrekt erscheint, schlägt das folgende Codefragment fehl:
DECLARE @filename VARCHAR(255) SET @filename = 'e:-digit Commercial.csv' BULK INSERT ZIPCodes FROM @filename WITH
Daher ist es nicht möglich, den Dateinamen als Variable an die BULK INSERT-Anweisung zu übergeben. Stattdessen können Sie die BULK INSERT-Anweisung dynamisch als Zeichenfolge erstellen und mit dynamischem SQL ausführen. Hier ist ein Beispiel:
DECLARE @filepath nvarchar(500) SET @filepath = N'e:-digit Commercial.csv' DECLARE @bulkinsert NVARCHAR(2000) SET @bulkinsert = N'BULK INSERT ZIPCodes FROM ''' + @filepath + N''' WITH (FIRSTROW = 2, FIELDTERMINATOR = '','', ROWTERMINATOR = ''\n'')' EXEC sp_executesql @bulkinsert
Dieser Code weist den Dateipfad der Variablen @filepath zu. Anschließend wird die BULK INSERT-Anweisung als Zeichenfolge erstellt und in der Variablen @bulkinsert gespeichert. Schließlich wird die dynamische SQL-Prozedur sp_executesql verwendet, um die konstruierte Anweisung auszuführen. Mit diesem Ansatz können Sie den Dateipfad parametrisieren und die BULK INSERT-Anweisung innerhalb einer gespeicherten Prozedur effektiv ausführen.
Das obige ist der detaillierte Inhalt vonWie verwende ich Variablen mit BULK INSERT in einer gespeicherten SQL-Prozedur?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!