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:-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 la forme d'une 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:-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 le problème. erreurs de syntaxe rencontrées dans l'implémentation originale de la procédure stockée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!