Ok, gracias, la perfomance no es algo critico y la idea era ir aprendiendo ROR 
como herramiento de trabajo mas alla que para este caso en particular por ahi 
no es opcion mas adecuada.

Nuevamente, muchas gracias



----- Original Message ----- 
  From: NachoKB 
  To: Grupo Ruby Argentina 
  Sent: Tuesday, June 12, 2007 12:16 PM
  Subject: Re: [Ruby Arg] Consulta sobre chomp y split


  No creo que se justifique el uso de expresiones regulares si el ancho es fijo.
  El tema de performance lo decía porque parece que el parser de expresiones 
regulares que usar el intérprete de Ruby no es muy rápido en varios casos, no 
por el costo de crear objetos y manipularlos (si eso te preocupa no elijas 
RoR!). 


  On 6/12/07, Fernando Castañeda <[EMAIL PROTECTED]> wrote:
    Gracias Nacho. 
    Efectivamente el tamaño es fijo teniendo el archivo entre 4000 a 100000 
lineas.
    Es una migracion de un sistema Visual Fox donde lo resolvia utilizando el 
substr() con la longitud de donde empeza cada campo y la cantidad de caractes a 
tomar.
    Aca vi que el tratamiento de strings era algo mas poderoso conjugado con 
las expresiones regulares.
    Esto lo pensaba implementar en ROR, y ya que hablas de perfomance, cada una 
de esas lineas se transforman en instancias de objetos para luego volcarla en 
BD, crees que el proceso demorará demasiado en procesar la cantidad de lineas 
mencionadas.
    El objeto a creer no tiene asociaciones con otros objetos.

    Otra consulta ya que estamos. Como se formatea la linea cuando las columnas 
vienen de ancho fijo ? 

    Bueno, no abuso mas de su confianza, y nuevamente gracias



    ----- Original Message ----- 
      From: NachoKB 
      To: Grupo Ruby Argentina 
      Sent: Tuesday, June 12, 2007 11:46 AM
      Subject: Re: [Ruby Arg] Consulta sobre chomp y split


      por lo que veo, las columnas son de tamaño fijo... eso te puede ayudar 
para parsearlo. La alternativa obviamente son las expresiones regulares.

      La pregunta es qué podés asumir de los datos. Si el tamaño fijo se 
mantiene a rajatabla, quizá sea lo más viable. Para las expresiones regulares 
habría que determinar un patrón que distinga a cada campo (o al menos al 
primero, parece). El tema es que ese patrón también se debe respetar a 
rajatabla, salvo que te alcance con cubrir el 99% de los casos y tener algunos 
para corregir (como en una migración puntual, pero decís "diariamente", por lo 
que no). 

      Si el archivo puede llegar a ser grande (y la performance una 
consideración), yo intentaría resolverlo con lo de los tamaños fijos...

      Saludos,

      Nacho


      On 6/12/07, Fernando Castañeda <[EMAIL PROTECTED]> wrote: 
        Hola grupo :
        Soy nuevo en ruby y aca va mi primer pregunta.
        Tengo el sig. archivo de txt que se deben procesar dariamente con el 
sig. formato.
        Ej : de un par de lineas que vienen:

        MAREJADA                       0001107 051215 4151.440S 06150.960W 224 
09.0 0000 005 G 470115510 08466 029 701006062
        CENTAURO 2000                  0000482 051215 4215.640S 06133.160W 096 
04.0 0000 005 G 470111210 08466 067 701019000
        ELSA LIBERTAD                  0001499 051215 4320.320S 06503.640W 327 
00.0 0000 005 G 470181191 08473 213 000000000
        QUE LE IMPORTA                 0001355 051215 4320.440S 06503.440W 343 
00.1 0000 005 G 470181217 08473 227 701000705
        ATREVIDO                       0000145 051215 4217.080S 06136.400W 080 
04.0 0000 005 G 470111910 08466 014 701006040

        El problema me surge con la que es mi primer atributo de la clase, el 
nombre del barco.
        Con la instruccion  line.chomp.split(" ") separo por especios en 
blanco, pero no me sirve para los buques cuyos  nombres a su vez están 
separados por espacios como "QUE LE IMPORTA" o "ELSA LIBERTAD" ya que pasan a 
ser otro atributo en esos casos particulares. 
        Hay alguna manera de hacerlo con expresiones regulares.
         Muchas gracias por su ayuda.
        Ej. del codigo que implemento.
        def procesar

        File.open("c:/vts/txt/d.txt") do |file|

        while

        line = file.gets 
        barco, matricula, latitud,  longitud, ems,  rmsi, etc= line.chomp.split(

        " ") 
        # codigo que crea el objeto movimientobuque para cada linea procesada

        end

        end

        Saludos desde Mar del Plata

        Fernando Castañeda.-




        _______________________________________________
        ruby mailing list
        [email protected]
        http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar






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


      _______________________________________________
      ruby mailing list
      [email protected]
      http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar



    _______________________________________________
    ruby mailing list
    [email protected]
    http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar






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


  _______________________________________________
  ruby mailing list
  [email protected]
  http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
_______________________________________________
ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

Responder a