Me parece importante tus observaciones respecto al opn, lo probare el día lunes y les contare como me fue, esto es importante ya que ha muchos nos puede servir para nuestras necesidades diarias-
Jaime Villa T. ----- Mensaje original ----- De: "Daniel Garcia" <[EMAIL PROTECTED]> Para: <[email protected]> Enviado: Sábado, 27 de Agosto de 2005 02:54 a.m. Asunto: Re: Cpyf Hola Jaime, Prueba a hacer la copia como te indique antes, con CPYF FROMFILE(*LIBL/ORIGEN) TOFILE(*LIBL/DESTINO) FROMRCD(1) en vez de CPYF FROMFILE(*LIBL/ORIGEN) TOFILE(*LIBL/DESTINO) FROMRCD(*START) Ademas copia todo el fichero de origen a destino de una vez, ahorraras algo de tiempo y de consumo de CPU. Depende de la maquina que tengas necesitaras 1 millon de registros para apreciar una diferencia, pero te aseguro que en maquinas lentas simplemente copiando 100.000 registros hay diferencias de unos pocos segundos. Si aun asi te interesa por algun motivo copiar en bloques hazlo de la siguiente forma. El CL debe estar sometido por BATCH y debe saber recuperar los nombres de los ficheros a copiar. Haces un OPNDBF FILE(*LIBL/ORIGEN) OPTION(*INP) SEQONLY(*NO 20) con esto abres el fichero de origen de solo lectura y en cada acceso al disco traeras a memoria 20 registros y para el de destino OPNDBF FILE(*LIBL/DESTINO) OPTION(*OUT) SEQONLY(*NO 20) Ahora cuando hagas la copia ya tendras siempre el fichero abierto y evitaras que DB2 tenga que abrir y cerrar cada vez el fichero, ya que esto suele consumir bastante tiempo. Per sigo pensando que lo mas optimo seria hacer PGM OPNDBF FILE(*LIBL/ORIGEN) OPTION(*INP) ACCPTH(*ARRIVAL) SEQONLY(*YES 20) OPNDBF FILE(*LIBL/DESTINO) OPTION(*OUT) SEQONLY(*NO 20) CPYF FROMFILE(*LIBL/ORIGEN) TOFILE(*LIBL/DESTINO) FROMRCD(1) CLOF OPNID(ORIGEN) CLOF OPNID(DESTINO) ENDPGM Dependiendo de tu maquina puedes hacer que recupere mas o menos registros en cada acceso al disco, pero no te recomendaria pusieras un valor por encima de 100. Saludos Dani Isencia S.L. Daniel García E-mail: [EMAIL PROTECTED] Tel. +34 93 754 03 66 Fax +34 93 754 03 98 Jaime Villa Torres escribió: >Gracias Jesús, ya realice esa prueba, pero los tiempos de respuesta con el >insert, son n veces mayor que realizar el cpyf en un solo trabajo. >Gracias por tu tiempo. > >Jaime Villa T. >----- Mensaje original ----- >De: "Jesus Olague" <[EMAIL PROTECTED]> >Para: <[email protected]> >Enviado: Viernes, 26 de Agosto de 2005 06:05 p.m. >Asunto: Re: Cpyf > > >A grosso modo: > >1. Obtienes de un archivo los nombres de los archivos a y b >2. Concatenas en una variable la sentencia SQL para que quede mas o menos > STRING = 'INSERT INTO b SELECT a WHERE blablabla' >3. Preparas la sentencia > C/EXEC SQL > C+ PREPARE SENT FROM :STRING > C/END-EXEC >4. Ejecutas la sentencia > C/EXEC SQL > C+ EXECUTE SENT > C/END-EXEC > >Y ya está. > >Saludos. > > > __________________________________________________ Forum.HELP400 es un servicio más de NEWS/400. © Publicaciones Help400, S.L. - Todos los derechos reservados http://www.help400.es _____________________________________________________ Para darte de baja visita la siguente URL: http://coyote.combios.es/mailman/listinfo/forum.help400 __________________________________________________ Forum.HELP400 es un servicio más de NEWS/400. © Publicaciones Help400, S.L. - Todos los derechos reservados http://www.help400.es _____________________________________________________ Para darte de baja visita la siguente URL: http://coyote.combios.es/mailman/listinfo/forum.help400
