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'
)
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);