„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Warum akzeptiert BULK INSERT keine variablen Dateipfade in gespeicherten Prozeduren?

Warum akzeptiert BULK INSERT keine variablen Dateipfade in gespeicherten Prozeduren?

Veröffentlicht am 22.12.2024
Durchsuche:335

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 mit einer Variablen:

DECLARE @filename VARCHAR(255)
SET @filename = 'e:\5-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:\5-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 die Syntaxfehler behoben werden, die in der ursprünglichen Implementierung der gespeicherten Prozedur aufgetreten sind.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3