sql >> Base de Datos >  >> RDS >> Sqlserver

Ruta de archivo de inserción masiva como parámetro de procedimiento almacenado

Use SQL dinámico para inyectar la variable de nombre de archivo en una cadena con la instrucción de inserción masiva y use sp_executesql para ejecutarlo. Es posible que desee agregar alguna comprobación de errores para verificar que la ruta sea válida y así sucesivamente.

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'