web-dev-qa-db-fra.com

Insertion en bloc avec paramètre de nom de fichier

J'ai besoin de charger quelques milliers de fichiers de données dans une table SQL Server. J'écris donc une procédure stockée qui ne reçoit qu'un seul paramètre - le nom de fichier. Mais .. Ce qui suit ne fonctionne pas .. Le "compilateur" se plaint du paramètre @FileName .. Il veut juste une chaîne simple .. comme 'file.txt'. Merci d'avance.

Ilan.

BULK INSERT TblValues
FROM @FileName
WITH 
(
FIELDTERMINATOR =',',
ROWTERMINATOR ='\n'
)
22
Ilan

La syntaxe de l'instruction BULK INSERT est:

BULK INSERT 
   [ database_name. [ schema_name ] . | schema_name. ] [ table_name | view_name ] 
      FROM 'data_file' 
     [ WITH 

Ainsi, le nom de fichier doit être une constante de chaîne. Pour résoudre le problème, veuillez utiliser SQL dynamique:

DECLARE @sql NVARCHAR(4000) = 'BULK INSERT TblValues FROM ''' + @FileName + ''' WITH ( FIELDTERMINATOR ='','', ROWTERMINATOR =''\n'' )';
EXEC(@sql);
38
Bogdan Sahlean