1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
  2. Anuncie Aqui
    Anuncie aqui você Também: fdantas@4each.com.br

importação de numeros gerando registros incorretos

Discussão em 'Progress 4GL' iniciado por ueluis, Maio 26, 2015.

  1. ueluis

    ueluis Membro Participativo

    @bootstrapmaster,
    obrigado pela sugestão em arquivos pequeno não há muita diferença, porém testei em um arquivo com 1.000.000 de números e a diferença de desempenho foi consideravel.

    o import foi bem mais rápido, vc teria algum exemplo para incluir e remover o ENTER na ultima linha de um txt?
  2. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    ai só pelo DOS, porque se tiver que ler o arquivo pra por o ENTER, vc já vai estar lendo mesmo .....
  3. ueluis

    ueluis Membro Participativo

    galera,

    segue abaixo a solução que encontrei baseado na dica de todos + pesquisas aqui no fórum mesmo, importei 1000.000 de registros em um tempo considerável!
    Código:
    DEFINE VARIABLE arquivo AS CHAR INIT /*"c:\temp\numeros.txt"*/ "C:\temp\numeros.txt".
    DEFINE VARIABLE arquivo_temp AS CHAR INIT "c:\temp\teste.txt".
    DEFINE VARIABLE tot_arquivo AS INTEGER NO-UNDO.
    DEF VAR cont AS INT.
    DEF VAR num_import AS CHAR FORMAT "x(14)".
    DEF TEMP-TABLE tt-numero
        FIELD id                AS INTEGER
        FIELD numero            AS CHARACTER FORMAT "X(14)".
    
    
    /************************** copiando para um novo arquivo *****************************************/
    
    dos silent value("COPY " + arquivo + " " + arquivo_temp).
    
    /************************* inserindo o enter na ultima linha ***************************************/
    INPUT FROM value(arquivo_temp).
    
    SEEK INPUT TO END.
    
    ASSIGN
        tot_arquivo = SEEK(INPUT).
    
    SEEK INPUT TO tot_arquivo - 1.
    READKEY.
    INPUT CLOSE.
    
    IF LASTKEY <> 13 THEN DO:
        OUTPUT TO VALUE (arquivo_temp)  APPEND.
            PUT SKIP(1).
        OUTPUT CLOSE.
    END.
    
    /************************* importando arquivo para tabela temporária *********************************/
    
    INPUT FROM value(arquivo_temp).
    
    REPEAT  WHILE  TRUE:
    
           IMPORT UNFORMATTED num_import.
          
           CREATE tt-numero.
           ASSIGN
               cont = cont + 1
               tt-numero.id = cont
               tt-numero.numero = num_import.
          
    END.
    
    INPUT  CLOSE .
    
    /***************************** deletando a quebra dentro da tabela ************************************/
    FOR EACH tt-numero WHERE tt-numero.numero = "":
        DELETE tt-numero.
    END.
    
    /************************ exportando txt para verificação de eficácia ********************************/
    OUTPUT TO VALUE("C:\temp\testeFIM.txt").
    
    FOR EACH tt-numero:
        EXPORT tt-numero.id tt-numero.numero .
    END.
    
    OUTPUT  CLOSE .
    /************************************** deletando o arquivo temporário *******************************************/
    dos silent value("DEL " + arquivo_temp).
    
    Eilleen curtiu isso.

Compartilhe esta Página