Heim > Datenbank > MySQL-Tutorial > Wie werden Variablen für Masseneinfügungen in T-SQL korrekt umgewandelt?

Wie werden Variablen für Masseneinfügungen in T-SQL korrekt umgewandelt?

Linda Hamilton
Freigeben: 2024-12-21 04:36:10
Original
220 Leute haben es durchsucht

How to Correctly Cast Variables for Bulk Inserts in T-SQL?

Variablen für Masseneinfügung in T-SQL umwandeln

In T-SQL ermöglicht die BULK INSERT-Anweisung den Import von Daten von extern Datei in eine Tabelle. Wenn jedoch eine Zeichenfolgenvariable als Datenquelle verwendet wird, kann ein Fehler auftreten.

Problem:

Der folgende T-SQL-Code schlägt mit einem Fehler fehl (Teil von eine gespeicherte Prozedur):

DECLARE @CSVfile nvarchar(255);
SET @CSVfile = N'T:\x.csv';
BULK INSERT [dbo].[TStagingTable]
-- FROM N'T:\x.csv' -- This line works
FROM @CSVfile -- This line fails
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n',
FIRSTROW = 2
)
Nach dem Login kopieren

Fehler Nachricht:

Incorrect syntax near the keyword 'with'.
Nach dem Login kopieren

Grund:

In der BULK INSERT-Anweisung erfordert die FROM-Klausel eine Literalzeichenfolge als Eingabedateipfad. Wenn Sie eine Variable verwenden, muss diese in eine Literalzeichenfolge umgewandelt werden.

Lösung:

Um die Variable @CSVfile in eine Literalzeichenfolge umzuwandeln, verwenden Sie das folgende dynamische T -SQL-Syntax:

declare @q nvarchar(MAX);
set @q=
    'BULK INSERT [TStagingTable]
    FROM '+char(39)+@CSVfile+char(39)+'
    WITH
    (
    FIELDTERMINATOR = '','',
    ROWTERMINATOR = ''\n'',
    FIRSTROW = 1  
    )'
exec(@q)
Nach dem Login kopieren

Dieser Code generiert eine dynamische SQL-Anweisung, die @CSVfile in eine Literalzeichenfolge innerhalb der FROM-Klausel umwandelt. Beheben des Problems und Ermöglichen der erfolgreichen Masseneinfügung.

Das obige ist der detaillierte Inhalt vonWie werden Variablen für Masseneinfügungen in T-SQL korrekt umgewandelt?. 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