Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Percorso del file di inserimento in blocco come parametro della procedura memorizzata

Utilizzare SQL dinamico per inserire la variabile del nome file in una stringa con l'istruzione di inserimento in blocco e l'uso sp_executesql per eseguirlo. Potresti voler aggiungere un controllo degli errori per verificare che il percorso sia valido e così via.

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'