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