Beim Versuch, eine gespeicherte Prozedur für die Masseneinfügung von Daten mit dem Befehl BULK INSERT zu erstellen, können Fehler auftreten. Ein solcher Fehler tritt auf, wenn versucht wird, dem Dateinamenparameter in der gespeicherten Prozedur eine Dateipfadvariable zuzuweisen.
In einer typischen BULK INSERT-Abfrage funktioniert die Angabe eines Dateipfads als Zeichenfolge korrekt:
BULK INSERT ZIPCodes FROM 'e:-digit Commercial.csv' WITH ( FIRSTROW = 2 , FIELDTERMINATOR = ',', ROWTERMINATOR = '\n' )
Beim Versuch, eine gespeicherte Prozedur mit einem variablen Dateipfad zu erstellen, können jedoch Fehler auftreten:
create proc dbo.InsertZipCode @filepath varchar(500)='e:-digit Commercial.csv' as begin BULK INSERT ZIPCodes FROM @filepath WITH ( FIRSTROW = 2 , FIELDTERMINATOR = ',', ROWTERMINATOR = '\n' ) end
Falsch Syntax in der Nähe von '@filepath' und 'with'
Dieser Fehler tritt auf, weil der BULK INSERT-Befehl Dateipfade nicht als Variablen unterstützt. Um dieses Problem zu beheben, können Sie entweder:
Verwenden von Dynamic SQL zum Erstellen des BULK INSERT Erklärung
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 Ansatz ermöglicht es Ihnen, die Flexibilität der Verwendung verschiedener Dateipfade beizubehalten und gleichzeitig gespeicherte Prozeduren für Masseneinfügungen zu nutzen.
Das obige ist der detaillierte Inhalt vonWie behebe ich Fehler beim Masseneinfügen gespeicherter Prozeduren bei der Verwendung variabler Dateipfade?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!