Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) comparar dois arquivos csv e gravar em um terceiro


ERG_M7

Pergunta

Olá pessoal, preciso de uma ajuda.

Tenho que comparar dois arquivos csv e gravar as linhas presentes em ambos em um 3º Arquivo:

No primeiro arquivo eu tenho: e-mail; nome; departamento; ramal;

No segundo arquivo temos : e-mail; id; nome_para_exibição; Data_de_ativação;

NO terceiro arqruivo eu preciso eu preciso das linhas do primeiro arquivo, cujo o e-mail consta no segundo arquivo.

Eu fiz o seguinte:

<%
        Set File = Server.CreateObject("Scripting.FileSystemObject")
        
        Set arquivo1 = File.OpenTextFile(Server.MapPath("ListaDeEmaiAlfal.csv"))
        Set arquivo2 = File.OpenTextFile(Server.MapPath("relatorio_email_28012009.csv"))
        Set comparado = File.OpenTextFile(Server.MapPath("comparado.csv"))i
    
        While (not arquivo1.AtEndOfStream)
    
            LeArquivo1 = arquivo1.readline 
        
            SeparaLinha1 = split(LeArquivo1,";")
        
            While (not arquivo2.AtEndOfStream)
        
                LeArquvio2 = arquivo2.readline
                SeparaLinha2 = split(LeArquivo2,";")
                
                If SeparaLinha1(0) = SeparaLinha2 (0) then
                    comparado.writeline LeArquivo1
                End If

            Wend

        Wend

        arquivo1.close
        arquivo2.close
               comparado.close
    %>

Mas não ta rolando.

Será qie alguém pode me ajudar?

Editado por Rafael Spilki
Tags code
Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0
Está dando algum erro ou coisa do tipo?

Não esta dando erro, mas a as informações gravadas no arquivo de saída não estão corretas.

Pelo que pude perceber, é como se a rotina estivesse lendo a primeira linha do primeiro arquivo, compara com todo o segundo arquivo...

Pega a segunda linha do primeiro, mas não consegue mais com parar com o segundo e assim não aparece mais nenhuma informação no arquivo de saída.

Editado por ERG_M7
Link para o comentário
Compartilhar em outros sites

  • 0

Graças a dica de um amigo, achei o problema e com outra dica a solução.

Como pensei, do jeito que esta o segundo loop só vai ser executad uma vez pois a partir deste instante o segundo arquivo sempre vai estar no final e não haverá nova comparação.

A solução encontrada foi:

Dim File1(),File2()
i = 0
j = 0

Set File = CreateObject("Scripting.FileSystemObject")

Set arquivo1 = File.OpenTextFile(Server.MapPath(Server.MapPath("ListaDeEmaiAlfal.csv"), 1)
Set arquivo2 = File.OpenTextFile(Server.MapPath(Server.MapPath("relatorio_email_28012009.csv), 1)
arquivo3 = Server.MapPath("comparado.csv")

Do Until arquivo1.AtEndOfStream
     Redim Preserve File1(i)
     File1(i) = arquivo1.ReadLine
     i = i + 1
Loop
Do Until arquivo2.AtEndOfStream
     Redim Preserve File2(j)
     File2(j) = arquivo2.ReadLine
     j = j + 1
Loop

arquivo1.Close
arquivo2.Close

For l = Lbound(File1) to UBound(File1) Step 1
    SeparaLinha1 = split(File1(l),";")
    For m = Lbound(File2) to UBound(File2) Step 1
            SeparaLinha2 = split(arrFile2(m),";")
            if Separalinha1(0) = Separalinha2(0) Then
               Set NewFile = File.OpenTextFile(arquivo3, 8, True, 0)
               NewFile.WriteLine File1(l)
               NewFile.Close
            End if
    Next
Next

E Funcionou

Editado por ERG_M7
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...