Heim >Datenbank >MySQL-Tutorial >Warum akzeptiert BULK INSERT keine variablen Dateipfade in gespeicherten Prozeduren?

Warum akzeptiert BULK INSERT keine variablen Dateipfade in gespeicherten Prozeduren?

Susan Sarandon
Susan SarandonOriginal
2024-12-26 22:47:09240Durchsuche

Why Doesn't BULK INSERT Accept Variable File Paths in Stored Procedures?

Masseneinfügung mithilfe gespeicherter Prozeduren: Fehlerbehebung

Beim Versuch, Daten mithilfe einer gespeicherten Prozedur massenhaft einzufügen, sind einem Entwickler Syntaxfehler aufgefallen. Das Ziel bestand darin, eine funktionierende BULK INSERT-Abfrage in eine Prozedur zu replizieren. Hier ist eine Analyse des Problems und seiner Lösung.

Das Problem entsteht durch den Versuch, einen Dateinamen als Variable an den BULK INSERT-Befehl innerhalb der gespeicherten Prozedur zu übergeben. Leider ist dies ein von BULK INSERT nicht unterstützter Vorgang.

Hier ist ein Beispiel für einen erfolglosen Versuch, eine Variable zu verwenden:

DECLARE @filename VARCHAR(255)
SET @filename = 'e:-digit Commercial.csv'

BULK INSERT ZIPCodes
FROM @filename
WITH

Stattdessen erwartet der BULK INSERT-Befehl einen fest codierten Dateipfad . Um diese Einschränkung zu umgehen, sollten Sie erwägen, die BULK INSERT-Anweisung als Zeichenfolge mit einem festen Dateinamen zu erstellen und sie als dynamisches SQL auszuführen.

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

Durch die Verwendung von dynamischem SQL kann die konstruierte Anweisung ausgeführt werden, wodurch das Problem aufgelöst wird Syntaxfehler, die in der ursprünglichen Implementierung der gespeicherten Prozedur aufgetreten sind.

Das obige ist der detaillierte Inhalt vonWarum akzeptiert BULK INSERT keine variablen Dateipfade in gespeicherten Prozeduren?. 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