"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment lancer correctement les variables pour les inserts en vrac dans T-SQL?

Comment lancer correctement les variables pour les inserts en vrac dans T-SQL?

Publié le 2025-03-25
Parcourir:138

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

Variables de coulée pour insert en vrac dans T-sql

Dans T-SQL, l'instruction d'insert en vrac permet d'importer les données à partir d'un fichier externe dans un tableau. Cependant, si vous utilisez une variable de chaîne comme source de données, une erreur peut se produire.

Problème:

Le code T-SQL suivant échoue avec une erreur (partie d'une procédure stockée):

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
)

Message d'erreur:

Incorrect syntax near the keyword 'with'.

Solution:

pour lancer la variable @csvfile dans une chaîne littérale, utilisez la syntax dynamique T-SQL suivante:

Déclare @q nvarchar (max); set @ q = 'Insert en vrac [tStagingTable] De 'char (39) @csvfile char (39)' AVEC ( Fieldterminator = '', '', Rowterminator = '' \ n '', Firstrow = 1 )) ' exec (@q) Ce code génère une instruction SQL dynamique qui lance @csvfile à une chaîne littérale dans la clause From, résolvant le problème et permettant à l'insert en vrac de réussir.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3