"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 > Pourquoi BULK INSERT n’accepte-t-il pas les chemins de fichiers variables dans les procédures stockées ?

Pourquoi BULK INSERT n’accepte-t-il pas les chemins de fichiers variables dans les procédures stockées ?

Publié le 2024-12-22
Parcourir:339

Why Doesn't BULK INSERT Accept Variable File Paths in Stored Procedures?

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.

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