locked
Uso de BULK INSERT con una variable, no con una ruta de archivo definida

    Question

  • Hola Amigos,  ojalá me puedan ayudar con lo siguiente:

    Estoy cargarndo un archivo TXT a una tabla con BULK INSERT, pero en lugar de especificar la ruta y el archivo TXT, necesito usar una variable...
    Estuve revisando algo de Dynamic SQL pero no he podido ejecutarlo correctamente.

    Por ejemplo, en lugar de esto:

    BULK INSERT [dbo].[Expedientes_2009]
    FROM 'C:\Documentos\Expedientes.TXT'
    WITH (FORMATFILE = 'C:\Formatos\Expedientes.FMT')

    Algo como esto:

    BULK INSERT [dbo].[Expedientes_2009]
    FROM @RutaArchivo
    WITH (FORMATFILE = 'C:\Formatos\Expedientes.FMT')

    Gracias de antemano por el apoyo.
    Wednesday, December 16, 2009 3:12 AM

Answers

  • La ruta no puede estar dentro de una variable, pero puedes usar SQL dinámico, como bien decías.

    Sería algo como

    DECLARE @sSql NVARCHAR(MAX), @path NVARCHAR(2000);
    
    SET @path = 'C:\Documentos\Expedientes.TXT';
    
    SET @sSql = 'BULK INSERT [dbo].[Expedientes_2009]
    FROM ''' + @path + '''
    WITH (FORMATFILE = ''C:\Formatos\Expedientes.FMT'')';
    
    PRINT @sSql
    
    EXEC (@sSql)
    Wednesday, December 16, 2009 10:00 AM

All replies

  • La ruta no puede estar dentro de una variable, pero puedes usar SQL dinámico, como bien decías.

    Sería algo como

    DECLARE @sSql NVARCHAR(MAX), @path NVARCHAR(2000);
    
    SET @path = 'C:\Documentos\Expedientes.TXT';
    
    SET @sSql = 'BULK INSERT [dbo].[Expedientes_2009]
    FROM ''' + @path + '''
    WITH (FORMATFILE = ''C:\Formatos\Expedientes.FMT'')';
    
    PRINT @sSql
    
    EXEC (@sSql)
    Wednesday, December 16, 2009 10:00 AM
  • Estimado Carlos,

    Muchas gracias por el apoyo, funcionó a la perfección.

    Thursday, December 17, 2009 5:03 AM