Urgente Conversão Data Flex para Progress

Discussão em 'Banco de Dados / Database' iniciado por eder.luca2012, Outubro 17, 2014.

  1. eder.luca2012

    eder.luca2012 Membro Participativo

    Pessoal estou com um problema preciso converter um banco dataflex para progress e gostaria de saber se alguém passou por essa experiência? se sim poderia me passar como resolveu esse problema?
  2. valdir_fantin

    valdir_fantin Membro Participativo

    Caro, @eder.luca2012 , vc precisa gerar textos das tabelas e depois importa-las no progress, se quiser te mando um exemplo disso

    Att
  3. eder.luca2012

    eder.luca2012 Membro Participativo

    Se você puder me enviar me ajudaria muito.
  4. pizzaia

    pizzaia Membro Participativo

    se o tabela do progress que você for importar for especifico daria para gerar um arquivo no formato do dump (.d) do progress e rodar a importação de uma vez só.

    fiz algo semelhante de dataflex para oracle, mil vezes mais rápido do que ler o TXT linha a linha via programação.

    t+
    pizzaia
  5. valdir_fantin

    valdir_fantin Membro Participativo

    segue exemplo :

    Código:
    /*     Importação Desenho Dataflex (Transmotecnica) ===> E.M.S.(PTI)      */
    /*                                                                        */
    /*     Autor  .: Valdir Fantin                                            */
    /*                                                                        */ 
    /*     Data ...: 29.03.2006                                               */
    
    
    DEF STREAM s-imp.
    DEF VAR c-linha      AS CHAR NO-UNDO.
    def var s-obs        as char.
    define variable i-lidos           as int init 0.
    define variable i-grav            as int init 0.
    define variable i-erro            as int init 0.
    
    define variable s-de-codigo       as char format "x(16)".
    define variable s-data-desenho    as char format "x(8)".    
    define variable s-responsavel     as char format "x(12)".
    define variable s-desenhista      as char format "x(12)".
    define variable s-formato         as char format "x(4)".
    define variable s-descricao       as char format "x(40)".
    define variable s-rv-codigo       as char format "x(8)".
    define variable s-cod-localiz     as char format "x(10)".
    
    
    define variable i-vez             as integer.
    
    
    define frame f-proc
        "Processando:"
        with  col 2 row 5 .
    
    define frame f-desenho
       
        with centered row 5 BGCOLOR 7 FGCOLOR 1 NO-UNDERLINE USE-REVVIDEO. 
      
    output to "Y:\errodesen.txt".
    
    put "Desenho"       at 1
        "Descricao"     at 20.
       
    
    INPUT STREAM s-imp FROM "Y:\desenho2.txt".
    
    
    /*    view frame f-proc.  */
    
    
    run processa.
    
    Put "------------------------------------------------------" at 1 skip
        "Final Processamento " at 1 skip
        "Lidos...:"  at 1
        i-lidos + i-erro      at 10 skip
        "Gravados:"  at 1
        i-grav       at 10 skip
        "Erros...:"  at 1
        i-erro      at 10.
    
    procedure processa:
    REPEAT on endkey UNDO, return no-apply:
    
       IMPORT STREAM s-imp UNFORMATTED c-linha.
    
       i-lidos = i-lidos + 1.
       i-erro  = 1.
    
    
       ASSIGN s-de-codigo    = SUBSTR(c-linha,001,016)
              s-data-desenho = SUBSTR(c-linha,017,008)
              s-responsavel  = SUBSTR(c-linha,025,012)
              s-desenhista   = SUBSTR(c-linha,037,012)
              s-formato      = SUBSTR(c-linha,049,004)
              s-descricao    = SUBSTR(c-linha,053,040)
              s-rv-codigo    = SUBSTR(c-linha,093,008)  
              s-cod-localiz  = SUBSTR(c-linha,100,010). 
         
          /*   put screen row 03 column 15 */
        
        
      /*    message "Processando ...." s-it-codigo. */
         
      /*       s-it-codigo .
          
           with frame f-desenho.
    
         hide frame f-desenho no-pause.  */
    
    /*    if i-vez > 10 then return.   */
        i-vez = i-vez + 1.
       
        find desenho where
             desenho.de-codigo = s-de-codigo no-error.
             if not avail desenho then do:
                   
    /*                i-erro = i-erro + 1.   */
    /*                message "ERRO .." s-de-codigo " - "  i-erro  view-as alert-box.  */
                 
                  create desenho.
                  run salvar.
    /*              disp s-it-codigo dec(s-vl-mat-ant)  dec(s-vl-mob-ant) dec(s-aliquota-ipi).    */
             end.       
    
             if avail desenho then do:
       /*         message "Passei .. " s-it-codigo " - " int(s-ressup-fabri) " - " item.ressup-fabri view-as alert-box. */
             end.
               
               
                                   
        if i-erro = 1 then
           put s-de-codigo   at 1
               s-descricao   at 18.
          
       if i-erro = 0 then       
          assign s-obs = ""
                 i-grav = i-grav + 1.
    
    
    end.
    
    INPUT CLOSE.
    
    end procedure.
    
    procedure salvar:
         assign desenho.de-codigo     =  s-de-codigo   
                desenho.data-desenho  =  date(s-data-desenho)
                desenho.responsavel   =  s-responsavel 
                desenho.desenhista    =  s-desenhista  
                desenho.formato       =  s-formato     
                desenho.descricao     =  s-descricao   
                desenho.rv-codigo     =  s-rv-codigo   
                desenho.cod-localiz   =  s-cod-localiz
                i-erro = 0.
    end procedure.
    
  6. pizzaia

    pizzaia Membro Participativo

    na época nós carregamos todos os dados DATAFLEX dentro de tabelas no ORACLE e fizemos tudo no mesmo banco. foi importado via SQLLOADER do oracle. foi muito rápido e seguro.

    dá para fazer algo parecido, gerando automaticamente o programa de exportação de dados DATAFLEX lendo o arquivo .FD (lista de campos) . este programa gerado irá fazer o loop na tabela dataflex e gerar o arquivo TXT no formato do dump do progress . gerará também um script para a criação da tabela da mesma estrutura no progress.
    dá para incluir o comando de limpar esta tabela e fazer o load no progress.

    dai para frente, é tudo 100% progress. seguro e rápido.

    na época perdi muito tempo, com drives ODBC e loop em TXT para importar, como o volume era grande , esta sem dúvida foi a melhor opção.

    t+
    Eberson Pizzaia

Compartilhe esta Página