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.
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