Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Chemin d'accès au fichier d'insertion en bloc en tant que paramètre de procédure stockée

Utilisez SQL dynamique pour injecter la variable de nom de fichier dans une chaîne avec l'instruction d'insertion en bloc et l'utilisation sp_executesql pour l'exécuter. Vous voudrez peut-être ajouter une vérification des erreurs pour vérifier que le chemin est valide, etc.

CREATE PROCEDURE [importFile] (@filePath VARCHAR(MAX))
AS
BEGIN
    CREATE TABLE #Temp
    (
      row1 int,
      row2 varchar(5),
      row3 bit
    )

    DECLARE @SQL NVARCHAR(MAX) = ''
    SET @SQL = N'
    BULK INSERT #Temp
      FROM ''' + @filePath + '''
      WITH (
        FIELDTERMINATOR = '','',
        ROWTERMINATOR = ''\n''
      )'

     -- ...

     EXEC sp_executesql @SQL
END

-- to run it:
EXEC importFile 'd:\test.csv'