Load de arquivo via 4GL

Discussão em 'Progress 4GL' iniciado por Joni, Junho 15, 2016.

  1. Joni

    Joni Membro Participativo

    Boa tarde Gurus,

    OpenEdge 10.2B
    HPUX
    Gostaria de saber como faço para carregar vários arquivos .d para dentro de um banco de dados. O problema é que nestes arquivos .d vários registros podem já existir na base de dados então seria importante validar cada linha antes de fazer o create. O ideal para min seria que fosse gerada uma lista de tudo que existe para ser carregado e a carga ocorresse sem a interação de usuário, ou seja sem que o usuário tenha que informar o nome de cada arquivo .d e cada tabela. Qualquer ajuda ou ideia será bem vinda.

    Obrigado,

    Joni
    rhemati curtiu isso.
  2. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    faz um import para uma temp-table, que é like a tabela do banco, e dai vc faz um for each na temp-table e depois um find na tabela do banco, se não existir, create e buffer-copy
    reissobr curtiu isso.
  3. Joni

    Joni Membro Participativo

    A ideia é boa, mas não é isto exatamente que preciso, gostaria de um programa simples 4GL mesmo pois será um usuário que ira realizar esta carga e ele deverá informa arquivo por arquivo.
  4. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    mas a logica é a mesma, não tem como ser mais simples que isso, o usuario indica o arquivo, vc importa os dados usando input from e import, jogando em uma temp-table, que é like a tabela do banco, dai vc procura na tabela do banco se existe os registros que estão na temp-table, se não, vc grava na tabela
    cintiasottelli curtiu isso.
  5. lhp.s

    lhp.s Membro Participativo

    Como dizia um velho amigo: "Mais mole que morder lesma"
    reissobr e cintiasottelli curtiram isso.
  6. joelscampos

    joelscampos Membro Participativo

    Este é o código que o bootstrapmaster falou:

    "tt-fornecedor" é a temp-table, e "fornecedor" é a tabela do banco.

    Código:
    def temp-table tt-fornecedor no-undo like fornecedor.
    
    input from value("c:\tmp\arquivo.d") no-convert.
    repeat:
        create tt-fornecedor.
        import tt-fornecedor.
    end.
    input close.
    
    for each tt-fornecedor:
    
        find first fornecedor no-lock
            where fornecedor.cd-fornecedor  = tt-fornecedor.cd-fornecedor
            no-error.
        if avail fornecedor
        then
            next.
       
        create fornecedor.
        buffer-copy tt-fornecedor to fornecedor.
    end.
    
    rhemati curtiu isso.

Compartilhe esta Página