Heim >Datenbank >MySQL-Tutorial >Wie verwende ich Variablen mit BULK INSERT in einer gespeicherten SQL-Prozedur?

Wie verwende ich Variablen mit BULK INSERT in einer gespeicherten SQL-Prozedur?

Susan Sarandon
Susan SarandonOriginal
2024-12-26 12:50:11816Durchsuche

How to Use Variables with BULK INSERT in a SQL Stored Procedure?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn