jueves, 30 de marzo de 2017

GENERAR ARCHIVO TXT DESDE SQL SERVER

Para generar un archivo txt desde el SQL Server, se tiene que ejecutar la siguiente sentencia con la estructura:


DECLARE @Cmd AS VARCHAR(1000)
SET @Cmd ='bcp "SELECT DATA FROM [NOMBRE_TABLA] [WHERE CONDICION1]" queryout [RUTA_DIRECTORIO_DESTINO]/[NOMBRE_ARCHIVO].txt -c -T -S [NOMBRE_SERVIDOR_BD] -U [USUARIO_BD] -P [CLAVE_USUARIO_BD] -d  [NOMBRE_BD]'
EXECUTE Master.dbo.xp_CmdShell  @Cmd

Ejemplo:

DECLARE @Cmd AS VARCHAR(1000)
SET @Cmd ='bcp "SELECT DATA FROM TRN.PROCESO_SALIDA_DETALLE WHERE CODIGO_PROCESO_SALIDA=63" queryout D:\UNIQUE\Documentos\ejemplo\query01_out.txt -c -T -S uni010028021249 -U usr_app_sfc -P u$r_@pp_$fc -d  FINANCIERO_PUENTE'
EXECUTE Master.dbo.xp_CmdShell  @Cmd


3 comentarios:

  1. y si quisiera que el nombre sea la fecha actual ??

    ResponderEliminar
    Respuestas
    1. declare @fecha varchar(12) set @fecha=cast(year(getdate()) as varchar(4))+'-'+right('00'+cast(month(getdate()) as varchar(2)), 2)+'-'+right('00'+cast(day(getdate()) as varchar(2)), 2);
      declare @Archivo VARCHAR(255) SET @Archivo = 'c:\'+@fecha+'_NOMBRE.txt';

      Eliminar
  2. Buen día, estoy tratando de realizar el proceso pero no me genera el archivo, qué estaré haciendo mal?
    'bcp "SELECT Texto FROM [MercaInventario].[ddmrp].[tmp_siesa_pedido] WITH(NOLOCK) " queryout \\192.168.100.80\Siesa\Pedidos\prueba.txt -c -T -S [NOMBRE_SERVIDOR_BD] -U [USUARIO_BD] -P [CLAVE_USUARIO_BD] -d [NOMBRE_BD';
    No pongo las credenciales por temas de seguridad.
    Gracias

    ResponderEliminar