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
Freigeben: 2024-12-26 22:47:09
Original
234 Leute haben es durchsucht

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage