Maison > base de données > tutoriel mysql > Comment utiliser des variables avec BULK INSERT dans une procédure stockée SQL ?

Comment utiliser des variables avec BULK INSERT dans une procédure stockée SQL ?

Susan Sarandon
Libérer: 2024-12-26 12:50:11
original
766 Les gens l'ont consulté

How to Use Variables with BULK INSERT in a SQL Stored Procedure?

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 
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal