Insérer des données en masse à l'aide d'une procédure stockée
Vous avez créé une requête qui exécute avec succès une tâche d'insertion en masse. Cependant, vous souhaitez maintenant encapsuler cette requête dans une procédure stockée pour améliorer la réutilisabilité. Malheureusement, vous avez rencontré des erreurs de syntaxe en tentant de le faire.
Le nœud du problème réside dans l'incapacité de la commande BULK INSERT à accepter un nom de fichier comme variable. Bien que votre code semble syntaxiquement correct, l'extrait de code suivant échouera :
DECLARE @filename VARCHAR(255) SET @filename = 'e:-digit Commercial.csv' BULK INSERT ZIPCodes FROM @filename WITH
Par conséquent, il n'est pas possible de transmettre le nom du fichier en tant que variable à l'instruction BULK INSERT. Au lieu de cela, vous pouvez créer dynamiquement l'instruction BULK INSERT sous forme de chaîne et l'exécuter à l'aide de SQL dynamique. Voici un exemple :
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
Ce code attribue le chemin du fichier à la variable @filepath. Il construit ensuite l'instruction BULK INSERT sous forme de chaîne et la stocke dans la variable @bulkinsert. Enfin, la procédure SQL dynamique sp_executesql est utilisée pour exécuter l'instruction construite. Cette approche vous permet de paramétrer le chemin du fichier et d'exécuter efficacement l'instruction BULK INSERT dans une 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!