Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Procesos Batch y Generar txt

Estas en el tema de Procesos Batch y Generar txt en el foro de SQL Server en Foros del Web. Hola Compañeros, primeramente me presento. Soi Juan, siempre he resolvido mis dudas visitando este foro respecto a las Bd que es el area en donde ...
  #1 (permalink)  
Antiguo 12/07/2010, 15:00
 
Fecha de Ingreso: julio-2010
Mensajes: 90
Antigüedad: 14 años, 4 meses
Puntos: 0
Pregunta Procesos Batch y Generar txt

Hola Compañeros, primeramente me presento.
Soi Juan, siempre he resolvido mis dudas visitando este foro respecto a las Bd que es el area en donde trabajo.
Pero estos dias me ha atacado un problema que no he podido resolver y pense empesar a participar en este foro para alludar y ser alludado.


Mi problema es el Siguiente.

Estoi Armando unos procesos Batch, con unas consultas relacionadas a las ventas y compras...
Este Proceso Batch, se deve ejecutar Semanalmente.
Tengo el Batch ya casi Armado, mi problema es que necesito Generar un Archivo "Txt" con los resultados de las consultas que estan en los Archivos Batch.
y es justamente eso de lo que no tengo idea, he buscado informacion pero me esta siendo dificil asimilarla o donde lo tendria que hacer de echo hasta estoi mas confundido de como empese jejeje...
Aver si alguno de ustedes me entiende y me ilumina, si necesitan mas detalles no duden en pedirmelos.
de ante mano, gracias para quienes se dan el tiempo para leer estas dudas y alludar.
  #2 (permalink)  
Antiguo 12/07/2010, 16:12
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 19 años, 3 meses
Puntos: 39
Respuesta: Procesos Batch y Generar txt

Puedes usar la herramienta bcp.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #3 (permalink)  
Antiguo 13/07/2010, 11:45
 
Fecha de Ingreso: julio-2010
Mensajes: 90
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Procesos Batch y Generar txt

Estube averiguando sobre las herramientas bcp, el problema es que nose como usarlas mui bien...
podrian darme algun link de algun tutorial de Herramientas BCP si es que conocen?, se los agradeceria...

Gracias Flaviovich
  #4 (permalink)  
Antiguo 13/07/2010, 12:55
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: Procesos Batch y Generar txt

Garilax, una duda, ¿no dominas el idioma español?, en este mismo foro es han publicado ayudas de BCP.EXE o bien, podrias buscar en San Google, donde encontraras muchos ejemplos.

Si bien, manejas 2005 u 2007, podrias utilizar el servicio de SSIS (servicios de integracion)
  #5 (permalink)  
Antiguo 13/07/2010, 13:30
 
Fecha de Ingreso: julio-2010
Mensajes: 90
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Procesos Batch y Generar txt

Resulta, que he buscado algun ejemplo que se adecue a lo que tengo que hacer, pero no he encontrado...
la consulta que devo enviar a el txt me trae mas de 1000 registros... y como estoi recien empesando en este tema, se me complica un poco...
Disculpa en todo caso si aveces molesta las consultas...
creo que ninguno nacio sabiendo sql... y los conocimientos se ganan con la experiencia y preguntando.-

Suerte, gracias
  #6 (permalink)  
Antiguo 13/07/2010, 13:48
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: Procesos Batch y Generar txt

Veamos:

Si ejecutas este ejemplo desde tu comando de DOS (C:\>)

bcp "SELECT * FROM TuServer.TuBase.dbo.TuTabla ORDER BY Tucolumna" queryout Tuarchivo.txt -c -T

Cambiado, el nombre del servidor, base y tabla, te dejara la informacion en Tuarchivo.txt
  #7 (permalink)  
Antiguo 13/07/2010, 13:51
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 19 años, 3 meses
Puntos: 39
Respuesta: Procesos Batch y Generar txt

Hablanos de tus procesos batch, y si nos muestras algo de codigo seria mejor.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #8 (permalink)  
Antiguo 13/07/2010, 14:03
 
Fecha de Ingreso: julio-2010
Mensajes: 90
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Procesos Batch y Generar txt

Haber.
Este es uno de mis select que se encuentran en uno de los procesos batch... se deveria ejecutar diaria o mensualmente, dependiendo del cliente.

Supongamos que este proceso se ejecutara mediante un Job.-
Cada Proceso Batch trae, porsierto alrededor de 4 o 5 select.
Ejemplo Existe el batch de Cliente y el Batch de Proveedor.-

Código SQL:
Ver original
  1. SELECT       'Vendedor' AS Vendedor,
  2.         ', ',
  3.         RIGHT('0000000000000' + RTRIM(LTRIM(MAE_CLI_PRO.ID_NACIONAL_CLI_PRO))
  4.                     + RIGHT('00' + CAST(MAE_DOCUMENTO.COD_TIENDA AS VARCHAR), 3), 13) AS RutCodTienda,
  5.         'PMER' AS PMER_x,
  6.         'A' AS A_x,
  7.         Razon_social_CLI_PRO AS Razon_Social,
  8.         DET_FORMA_PAGO_DOCUMENTO.cod_tipo_FORMA_PAGO AS FormPago,
  9.         '0' AS Cero,
  10.         '    ' AS espacio,
  11.         '      ' AS espacio,
  12.         Razon_social_CLI_PRO AS Razon_Social,
  13.         Razon_social_CLI_PRO AS Razon_Social,
  14.         '                              ' AS espacio,
  15.         RIGHT('                              '+'ESTIMADO(A) SR.(A)',30) AS Leyenda,
  16.         '                              ' AS espacio,
  17.         NUB_CALLE_CLI_PRO.DIRECCION_CLI_PRO AS Direccion,
  18.         RIGHT('                              '+'2-RETIRA 5 DE ABRIL',30) AS Retira,    
  19.  
  20.         REF_CIUDAD.COD_CIUDAD AS Ciudad,
  21.         REF_REGION.COD_REGION AS Region,
  22.         '          ' AS espacio,
  23.         'CL' AS Pais,
  24.         RIGHT('0000000000' + mae_CLI_PRO.telefono_contacto  +CAST('          ' AS VARCHAR),20) AS Telefono,
  25.         '                              ' AS espacio,
  26.         '                              ' AS espacio,
  27.         Razon_social_CLI_PRO AS Razon_Social,
  28.         '                              ' AS espacio,
  29.         '                              ' AS espacio,
  30.         '                              ' AS espacio,
  31.         '                              ' AS espacio,
  32.         '                              ' AS espacio,
  33.         '  ' AS espacio,
  34.         '          ' AS espacio,
  35.         '   ' AS espacio,
  36.         RIGHT('0000000000' + mae_CLI_PRO.telefono_contacto  +CAST('          ' AS VARCHAR),20) AS Telefono,
  37.         '                              ' AS espacio,
  38.         '0,           ,0,V,   ,,,,,,D,,,,,,,,,,,N,1,1' AS Campos_Defecto       
  39. FROM         MAE_DOCUMENTO INNER JOIN
  40.                       MAE_CLI_PRO ON MAE_DOCUMENTO.COD_CLI_PRO = MAE_CLI_PRO.COD_CLI_PRO AND
  41.                       MAE_DOCUMENTO.COD_COMERCIO = MAE_CLI_PRO.COD_COMERCIO INNER JOIN
  42.                       DET_FORMA_PAGO_DOCUMENTO ON MAE_DOCUMENTO.COD_CAJA = DET_FORMA_PAGO_DOCUMENTO.COD_CAJA AND
  43.                       MAE_DOCUMENTO.COD_COMERCIO = DET_FORMA_PAGO_DOCUMENTO.COD_COMERCIO AND
  44.                       MAE_DOCUMENTO.COD_TIENDA = DET_FORMA_PAGO_DOCUMENTO.COD_TIENDA AND
  45.                       MAE_DOCUMENTO.COD_TIPO_DOCUMENTO = DET_FORMA_PAGO_DOCUMENTO.COD_TIPO_DOCUMENTO AND
  46.                       MAE_DOCUMENTO.COD_TRANSACCION = DET_FORMA_PAGO_DOCUMENTO.COD_TRANSACCION AND
  47.                       MAE_DOCUMENTO.ES_SERVIDOR = DET_FORMA_PAGO_DOCUMENTO.ES_SERVIDOR AND
  48.                       MAE_DOCUMENTO.FECHA_DOCUMENTO = DET_FORMA_PAGO_DOCUMENTO.FECHA_DOCUMENTO INNER JOIN
  49.                       NUB_CALLE_CLI_PRO ON
  50.                       MAE_CLI_PRO.COD_CLI_PRO = NUB_CALLE_CLI_PRO.COD_CLI_PRO INNER JOIN
  51.                       REF_CIUDAD ON MAE_DOCUMENTO.COD_CIUDAD = REF_CIUDAD.COD_CIUDAD INNER JOIN
  52.                       REF_REGION ON REF_CIUDAD.COD_REGION = REF_REGION.COD_REGION
  53. WHERE mae_documento.cod_tipo_documento=5

Ahora les reitero mi pregunta aver si me pueden orientar un poco.
Como hago para que uno de mis procesos Batch, me entregue los datos que me trae cada uno de mis select en formato TXT.-
  #9 (permalink)  
Antiguo 13/07/2010, 14:33
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: Procesos Batch y Generar txt

Combinando el servicio de AGENT que te genera los JOB's o trabajos, podrias programar la ejecucion de tu BCP, cada semana, mes, año, quincena, trimestre, etc.

¿Como ejecutarlo desde SQL Server?

Utiliza el procedimiento de sistema, XP_CMDSHELL y mandas a ejecutar tu BCP.EXE

Con el ejemplo que te puse, podrias comenzar
  #10 (permalink)  
Antiguo 13/07/2010, 14:42
 
Fecha de Ingreso: julio-2010
Mensajes: 90
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Procesos Batch y Generar txt

ok, lo intentare..
Luego comento como me fue.-
Gracias iislas
  #11 (permalink)  
Antiguo 13/07/2010, 17:40
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: Procesos Batch y Generar txt

Por aqui estaremos para comentar contigo...
  #12 (permalink)  
Antiguo 15/07/2010, 10:02
 
Fecha de Ingreso: julio-2010
Mensajes: 90
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Procesos Batch y Generar txt

Gracias por la ayuda, me fue exelente.
Me costo un poco comprender el proceso, pero ya lo termine. de hecho salio mucho mejor de lo que creia.
  #13 (permalink)  
Antiguo 15/07/2010, 10:04
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: Procesos Batch y Generar txt

Perfecto !!!, para eso son los foros, para colaborar, saludos y felicidades...
  #14 (permalink)  
Antiguo 15/07/2010, 10:45
 
Fecha de Ingreso: julio-2010
Mensajes: 90
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Procesos Batch y Generar txt

Me ha saltado una duda.
Resulta que con el comando.

Ejemplo.

Cita:
declare
@sql varchar(8000)
begin

set @sql = 'bcp "SELECT * from BD..tabla" queryout "C:\bcp\doc.txt" -c -T'
--
print @sql
exec master..xp_cmdshell @sql
end
Enviamos los resultados de la consulta a un archivo "txt".
Pero Como hariamos si a ese archivo "txt", le quisieramos ingresar mas datos con otra consulta diferente.
porque al ejecutarlo, y teniendo ya datos el documento, este pisa los datos.
Esto quiere decir que los datos anteriores desaparecen y queda solamente con los nuevos, sin dar la posibilidad de integrar mas datos sin borrar los anteriores.
  #15 (permalink)  
Antiguo 15/07/2010, 10:49
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: Procesos Batch y Generar txt

Si vas a combinar datos, hazlo desde tu query
  #16 (permalink)  
Antiguo 15/07/2010, 11:01
 
Fecha de Ingreso: julio-2010
Mensajes: 90
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Procesos Batch y Generar txt

es que son lineas diferentes de resultados.
Cada consulta me guardaria registros como estos en el txt.
Cita:
EJEMPLO CONSULTA 1
Document, ,VO,FA,0965579109000,11/03/2009,4960 ,11/03/2009, ,000000000049694, ,A, , ,11/03/2009,11/03/2009,11/03/2009, ,210701,30020000 , , , , , ,
1 , 2, 3, 4, 5 , 6 , 7 , 8 , , 9 , 10 ,A, 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 -----------------------------------------------------------------------------------------------
Ejemplo Consulta 2.
Batch, ,200911,N,,
1 , 2 , 3 ,N,,
Consulta 2.
------------------------------------------------------------------------------------------------

Transaction,N,,210702 ,,,30020000 ,,,Compra Diaria ,,,000000000041760, , ,,,,,,
1 ,N,, 2 ,,, 3 ,,, 4 ,,, 5 , 6 , 7
Ejemplo Consulta 3.
Cada Consulta me guarda una serie de registros como ejemplos de la consulta 1, consulta 2 y consulta 3...
Trabajando con diferentes tablas...
por lo tanto. de igual manera me pisaria los datos o no?
  #17 (permalink)  
Antiguo 15/07/2010, 11:28
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: Procesos Batch y Generar txt

Te doy una solucion:

1. Ejecutas tus 3 query's y dejas con BCP.EXE, 3 archivos
2. Terminando el proceso, simplemente "juntas" tus 3 archivos con un simple

XCOPY FILE1.TXT+FILE2.TXT+FILE3.TXT FIELTOTAL.TXT
  #18 (permalink)  
Antiguo 15/07/2010, 12:12
 
Fecha de Ingreso: julio-2010
Mensajes: 90
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Procesos Batch y Generar txt

Haciendo Pruebas.-.............
  #19 (permalink)  
Antiguo 15/07/2010, 14:07
 
Fecha de Ingreso: julio-2010
Mensajes: 90
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Procesos Batch y Generar txt

Probando solo con 1 archivo, copiando este en la misma carpeta, pero con otro nombre de archivo no toma segun el codigo que me dejaste iislas.

Cita:
declare
@sql varchar(8000)
begin
set @sql = N'Xcopy "c\bcp\doc.txt C:\bcp\doc2.txt" -c -T '
print @sql
exec BD..xp_cmdshell @sql


RESULTADO.-
Número de parámetros no válido
0 archivos copiados
NULL
end
Tomando 2 archivos y tratando de concatenar segun lo que me dejaste, tampoco toma... puesto a que me toma toda la fila de query como un solo nombre de archivo.
Cita:
declare
@sql varchar(8000)
begin
set @sql = N'Xcopy "c\bcp\doc.txt + doc2.txt doctotal.txt" '
print @sql
exec BD..xp_cmdshell @sql
end

RESULTADO.-
No se encuentra el archivo: doc.txt + doc2.txt doctotal.txt
0 archivos copiados
NULL
y al separar el nombre de archivos por comillas dobles... me dice
Cita:
Número de parámetros no válido
0 archivos copiados
NULL
  #20 (permalink)  
Antiguo 15/07/2010, 14:20
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: Procesos Batch y Generar txt

Compañero, el XCOPY.EXE es un comando de SISTEMA OPERATIVO y no recibe parametros

A esta instruccion, le hace falta los 2 PUNTOS

cDOSPUNTOSAQUI\bcp\doc.txt + doc2.txt doctotal.txt

Por otro lado, para probar que tu instruccion sea la correcta, te puedes ir a la linea de comando y ejecutar directamente tu XCOPY y despues ponerlo en tu sql server, saludos
  #21 (permalink)  
Antiguo 15/07/2010, 14:47
 
Fecha de Ingreso: julio-2010
Mensajes: 90
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Procesos Batch y Generar txt

Tambien lo ejecute en cmd, pero me dice que hay un error"parametros no validos".
lo que si pude hacer es copiar un archivo a otro, pero luego intente concatenar y me salia
"error de parametros".
Creo que puede faltar algun comando entre los 2 archivos a concatenar y el archivo final...
o quizas el error me lo este dando el "+" que va enmedio de los arch a concatenar..-
Cita:
xcopy archivo1.txt + archivo2.txt archivoFinal.txt
  #22 (permalink)  
Antiguo 15/07/2010, 15:25
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: Procesos Batch y Generar txt

Veamos, intentalo con un simple copy:

COPY archivo1.txt + archivo2.txt archivoFinal.txt
  #23 (permalink)  
Antiguo 15/07/2010, 15:50
 
Fecha de Ingreso: julio-2010
Mensajes: 90
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Procesos Batch y Generar txt

Efectivamente, era tal cual lo indicaste tu.
ahora solo tengo que probar con lo final.


gracias nuevamente iislas
  #24 (permalink)  
Antiguo 19/07/2010, 10:27
 
Fecha de Ingreso: julio-2010
Mensajes: 90
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Procesos Batch y Generar txt

Nuevamente con problemas.

Los "txt" se estan creando correctamente, pero los conjuntos de consultas los tiro por separado. El "txt" me esta quedando algo asi.-
Cita:
RESULTADOS Nº1 CONSULTA 1
RESULTADOS Nº2 CONSULTA 1
RESULTADOS Nº3 CONSULTA 1
RESULTADOS Nº4 CONSULTA 1


RESULTADOS Nº1 CONSULTA 2
RESULTADOS Nº2 CONSULTA 2
RESULTADOS Nº3 CONSULTA 2
RESULTADOS Nº4 CONSULTA 2

RESULTADOS Nº1 CONSULTA 3
RESULTADOS Nº2 CONSULTA 3
RESULTADOS Nº3 CONSULTA 3
RESULTADOS Nº4 CONSULTA 3

ETC...
y ahora me lo estan pidiendo que salga de la siguiente manera.
Cita:
RESULTADOS Nº1 CONSULTA 1
RESULTADOS Nº1 CONSULTA 2
RESULTADOS Nº1 CONSULTA 3


RESULTADOS Nº2 CONSULTA 1
RESULTADOS Nº2 CONSULTA 2
RESULTADOS Nº2 CONSULTA 3


RESULTADOS Nº3 CONSULTA 1
RESULTADOS Nº3 CONSULTA 2
RESULTADOS Nº3 CONSULTA 3
En donde cada Numero de fila de cada consulta se relaciona respecto a sus datos con las otras.

Alguna idea de como hacer esto?.
Gracias de antemano.
  #25 (permalink)  
Antiguo 19/07/2010, 14:32
 
Fecha de Ingreso: julio-2010
Mensajes: 90
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Procesos Batch y Generar txt

Alguna idea?...

O.o?
  #26 (permalink)  
Antiguo 20/07/2010, 10:08
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: Procesos Batch y Generar txt

Si las consultas (generacion de archivos) se ejecutan en tiempos distintos, sera IMPOSIBLE que una vez puestas en tu archivo TEXTO PLANO, se puedan ORDENAR, a menos claro que "subieras" ya tu archivo total a SQL Server, lo ORDENARAS y lo volvieras a "bajar" a DOS.

Etiquetas: batch, procesos, txt
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:16.