Programación en castellano
Inicio > Foros > SQL Server > ¿Cómo se genera un archivo plano (.txt) de un Select por medio de un Query en SQL server?
-Foros de debate

SQL Server
Lista de foros | Lista de mensajes de este foro

Privacidad: Recuerde que la información escrita en los foros de programación es 100% pública y que su ip será registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisión y eliminación.

¿Cómo se genera un archivo plano (.txt) de un Select por medio de un Query en SQL server?
Enviado por jfredy el día 18 de diciembre de 2005

Hola amigos, tengo una pregunta y no es tan complicada pero yo no sé cómo serealiza, necesito que alguien me ayude con un query en SQL Sever para generar un archivo plano (*.txt) de una tabla seleccionada cualquiera.

Para publicar este archivo de texto por FTP y descargar desde el WEB Site, Gracias al que me pueda responder con la mayor brevedad posible.

Un compañero del foro me respondión que con la sentencia UNLOAD .. TO, pero ésta funciona es para Oracle, porque en SQL server genera errores.

Saludos

 
Re: ¿Cómo se genera un archivo plano (.txt) de un Select por medio de un Query en SQL serv
Enviado por chipiti el día 15 de noviembre de 2007

coja OFICIO GUEVON ESTUDIE PARA QUE FUE AL COLEGIO... IGNORANTE

 

Re: ¿Cómo se genera un archivo plano (.txt) de un Select por medio de un Query en SQL serv
Enviado por monky el día 19 de diciembre de 2005

Puedes usar el utilitario MSDOS OSQL.
La sintaxis es

osql -Utulogin -Ptupassword -igenera.sql -osalida.txt -Stuserversql

la gracia esta en los parametros -i y -o .... el -i indicas el script con la sentencia sql y el parametro -o das el nombre al archivo de salida con el resultado de tu query
Ejemplo de genera.sql (lo puedes crear con culaquier editor)
use TUBASE
go
select col1,col2,col3,..... from TUTABLA where......
go
Para que te funcione este utilitario debes de tener instalado el Client SQL Server en tu maquina.

Ahora si quisieras automatizar esta tarea, basta con que crees un JOB en el SQL Agent y lo agendas para que se ejecute cuando lo necesites

 
Re: Re: ¿Cómo se genera un archivo plano (.txt) de un Select por medio de un Query en SQL
Enviado por monky el día 19 de diciembre de 2005

Se me olb¡vidaba decirte que existe otra forma.... usando el utilitario BCP (bulk copy).... lo que debes hacer para generar el archivo es primero crear una vista con la query que necesita y luego por consola MSDOS (cmd.exe) ejecutas un BCP con parametro de salido -osalida.txt.... investiga este utilitario

 
Re: Re: Re: ¿Cómo se genera un archivo plano (.txt) de un Select por medio de un Query en
Enviado por jfredy el día 19 de diciembre de 2005

Gracias Monky por el aporte, lo probaré...

 


Re: Re: ¿Cómo se genera un archivo plano (.txt) de un Select por medio de un Query en SQL
Enviado por jfredy el día 19 de diciembre de 2005

ya probé esa sintaxis en MSDOS pero no funcionó, aunque debe haber una forma sencilla de generar ese el archivo plano a través de una sentencia SQL no? no sé si con UNLOAD funcionará porque lo probé y me generó error, te gradezco si lo sabes manejar para que me des una mano, Gracias men...

 
Re: Re: Re: ¿Cómo se genera un archivo plano (.txt) de un Select por medio de un Query en
Enviado por GabrielSR2004 el día 19 de diciembre de 2005

/*********************************************************************/
/*********************************************************************/
/******* Te Paso un Ejemplo de como Realizar el ******/
/******** Respaldo y la Recuperación del Mismo *******/
/*********************************************************************/
/*********************************************************************/



/*

SP_Resp_Tabla_Disco '\\Servidor_1\F$\Resp\','Nom_Tabla','ArchTexto.Txt','sa','1','Ejemplo'


Nota : Decripcion de los Parametros

1) Ruta donde se dejara la información de la Tabla que esta en SQL-Server
2) Nombre de la Tabla en SQL-Server
3) Nombre con el que quieres que se quede el archivo de Text
4) Usuario con derechos de Admin
5) Password del usuario
6) Nombre de la BD del Servidor

Ejemplo

El ejecutar el procedimiento

SP_Resp_Tabla_Disco

Respaldara la tabla a TXT

El ejecutar el procedimiento

SP_Recupera_TxT_BD

Sube la información de TXT a SQL-Server

Los parametros que tiene el BCP son para que la tabla ya exista en
el servidor en el que subiras la tabla txt.


Si quieres que se cree te lo dejo de tare

*/
If Exists(Select *
From Sysobjects
Where Name = 'SP_Resp_Tabla_Disco')
Drop Proc SP_Resp_Tabla_Disco
Go
Create Proc SP_Resp_Tabla_Disco
@Ruta Varchar(100),
@TablaSQL Varchar(100),
@NomArchTXT Varchar(100),
@Login Varchar(100),
@Password Varchar(100),
@NomBD Varchar(100)
AS
Begin
Declare
@Text1 Varchar(100),
@Text2 Varchar(100),
@result Int,
@Bodega Varchar(10)

select @Text1 = 'dir '+ ltrim(rtrim(@Ruta)) + ltrim(rtrim(@NomArchTXT))

EXEC @result = master..xp_cmdshell @text1

IF (@result > 0 )
BEGIN
select @Text2 = 'bcp '+ltrim(rtrim(@NomBD))+'..'+ltrim(rtrim(@TablaSQL))+' out '
select @Text2 = @Text2 + ltrim(rtrim(@Ruta)) + ltrim(rtrim(@NomArchTXT))
select @Text2 = @Text2 + ' -c -U'+ltrim(rtrim(@Login))+' -P'++ltrim(rtrim(@Password))

EXEC master..xp_cmdshell @Text2

Print 'R e s p a l d a d o'

EXEC @result = master..xp_cmdshell @Text1
END
End
Go
Grant All on SP_Resp_Tabla_Disco to Public

-----------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------

/*

SP_Recupera_TxT_BD '\\Servidor_1\F$\Resp\','Nom_Tabla','ArchTexto.Txt','sa','1','Ejemplo'

*/

If Exists(Select *
From Sysobjects
Where Name = 'SP_Recupera_TxT_BD')
Drop Proc SP_Recupera_TxT_BD
Go
Create Proc SP_Recupera_TxT_BD
@Ruta Varchar(100),
@TablaSQL Varchar(100),
@NomArchTXT Varchar(100),
@Login Varchar(100),
@Password Varchar(100),
@NomBD Varchar(100)
AS
Begin
Declare
@Text1 Varchar(100),
@Text2 Varchar(100),
@result Int,
@Bodega Varchar(10)

select @Text1 = 'dir '+ ltrim(rtrim(@Ruta)) + ltrim(rtrim(@NomArchTXT))
EXEC @result = master..xp_cmdshell @text1

IF (@result <= 0 )
BEGIN
select @Text2 = 'bcp '+ltrim(rtrim(@NomBD))+'..'+ltrim(rtrim(@TablaSQL))+' in '
select @Text2 = @Text2 + ltrim(rtrim(@Ruta)) + ltrim(rtrim(@NomArchTXT))
select @Text2 = @Text2 + ' -c -U'+ltrim(rtrim(@Login))+' -P'++ltrim(rtrim(@Password))

Print 'R e s p a l d a n d o'

EXEC @result = master..xp_cmdshell @Text2
END
End
Go
Grant All on SP_Recupera_TxT_BD to Public


 
¿Cómo se genera un archivo plano (.txt) de un Select desde el Query Analizer??
Enviado por jfredy el día 20 de febrero de 2006

Hola Gabriel:

la verdad te agradezco bastante el aporte me ha dado una idea al respecto, pero he tenido problemas tal vez con el BCP.

Es que la problematica es la diguiente: necesito filtrar una informacion de diferentes tablas y con ello generar un archivo plano con unas especificaciones, que son las siguientes:
El archivo .txt, debe estar compuesto por tres tipos de registros:
1. ENCABEZADO: se concatenan, fecha de generacion del archivo txt, nombre del archivo incluyendo la extension .txt (NOM_REGISTRO.txt) y debe coincidir con el nombre externo del mismo archivo y completarse con ceros hasta el tamaño maximo del registro por ej = 143 caracteres (de encabezado es sólo un registro, nada más)
2. DETALLE: Acá se concatenan los campos que se extrayeron del Join o select, de esta manera:
Registro1: campo1+campo2+campo3+...+campoN=143 caracteres
Registro2: campo1+campo2+campo3+...+campoN=143 caracteres
.
.
RegistroM: campo1+campo2+campo3+...+campoN=143 caracteres
De registro detalle la cantidad de registros es M, dependiendo de cuantos extraiga el select y/o Join.

3. TOTALES: se concatenan algunos totales, por ej:
cant registr=M+total ventas+totalporcentajes+etc o ceros.... = 143 caracteres; la cantidad de registros totales es 1al igual que el encabezado

En cada registro se concatenan los campos especificos, y deben sumar la misma cantidad de caracteres, por ej. 143, y cada campo a concatenar tiene un tamaño especifico y si no es completado se rellena o con ceros a la izquierada si es numerico el campo a concatenar, o con espacios a la derecha si es alfanumerico.

de esta manera quedaria conformado el archivo por ej: NOMBREAAAAMMDD.txt que debe coincidir su nombre externo con la fecha de generacion y el nombre interno (nombre que esta en el registro encabezado), esto debe ser en SQL server, tengo una solucion en Oracle pero es total mente diferente a la sintaxis en SQL server, no se si me pueden ayudar
Mucha Gracias!

 
Re: ¿Cómo se genera un archivo plano (.txt) de un Select desde el Query Analizer??
Enviado por Ing Handal el día 10 de mayo de 2006

Señores esta muy bien si yo quiero copiar ese archivo en una maquina dentro de la Red, Pero si necesito copiarlo en un FTP que esta en Internet como lo Hariamos???

 
Re: Re: ¿Cómo se genera un archivo plano (.txt) de un Select desde el Query Analizer??
Enviado por hugo el día 30 de octubre de 2007

no se

 







Tienda
Patrocinados
 

Copyright © 1999-2007 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad
Mantenida por: Claudio y Dani.

Hospedaje web y servidores dedicados linux por Ferca Network

red internet: musica mp3 | amor | hospedaje web linux | registro de dominios | servidores dedicados
más internet: comprar | gratis | posicionamiento en buscadores | decoración libre | gifs animados