Insertion groupée à l'aide de procédures stockées : dépannage
Lors d'une tentative d'insertion groupée de données à l'aide d'une procédure stockée, un développeur a rencontré des erreurs de syntaxe. L'objectif était de répliquer une requête BULK INSERT fonctionnelle dans une procédure. Voici une analyse du problème et de sa résolution.
Le problème survient lorsque vous tentez de transmettre un nom de fichier en tant que variable à la commande BULK INSERT dans la procédure stockée. Malheureusement, il s'agit d'une opération non prise en charge par BULK INSERT.
Voici un exemple de tentative infructueuse utilisant une variable :
DECLARE @filename VARCHAR(255) SET @filename = 'e:\5-digit Commercial.csv' BULK INSERT ZIPCodes FROM @filename WITH
Au lieu de cela, la commande BULK INSERT attend un chemin de fichier codé en dur. Pour contourner cette limitation, envisagez de construire l'instruction BULK INSERT sous forme de chaîne avec un nom de fichier fixe et de l'exécuter en tant que SQL dynamique.
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
En utilisant du SQL dynamique, l'instruction construite peut être exécutée, résolvant ainsi les erreurs de syntaxe rencontrées dans l'implémentation de la procédure stockée d'origine.
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