ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Escrever arquivo texto com milhões de linhas

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
mastersoftware
Aprendiz
Aprendiz


Registrado: Sexta-Feira, 30 de Mai de 2008
Mensagens: 182

MensagemEnviada: Dom Set 29, 2019 8:49 am    Assunto: Escrever arquivo texto com milhões de linhas Responder com Citação

Bom dia pessoal,
Tenho uma tabela do banco de dados para escrever em um arquivo texto, que tem 6 milhões de linhas.
Da seguinte maneira abaixo :

While not tabvendas.eof do
begin
AssignFile(arqBackup, FsNomeArquivo);
if not FileExists(FsNomeArquivo) then
Rewrite(arqBackup)
else
Append(arqBackup);


WriteLn(arqBackup, sStringSql);

tabvendas.next;
end;

Realizando testes, descobri que este aquivo demora demais pra ser escrito linha a linha, ( cerca de 6 horas ).
Gostaria de saber com o pessoal do fórum.
Existe alguma maneira que consiga realizar esta tarefa de uma forma mais rápida ?

Obrigado.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
anderbelluno
Mestre
Mestre


Registrado: Quarta-Feira, 23 de Novembro de 2011
Mensagens: 995
Localização: Cianorte-PR

MensagemEnviada: Dom Set 29, 2019 2:15 pm    Assunto: Responder com Citação

StringList e faz um SaveToFile
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10429
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Sex Out 04, 2019 8:04 am    Assunto: Responder com Citação

Amigo, infelizmente o strinlist não é a melhor forma para isto, tem um artigo no the club magazine, lá tem uma classe chamada FASFILE, tente com ela.



Tente este site, tem uma solução:
http://delphidabbler.com/tips/169

http://www.theclub.com.br/Restrito/Revistas/201610/TFIL1610.ASPX
http://www.theclub.com.br/Restrito/Revistas/201502/fast1502.aspx

https://stackoverflow.com/questions/17712813/the-best-solution-to-process-the-huge-text-file-data-in-delphi-7



bye
_________________
P.O.W.E.R B.Y D.E.L.P.H.I
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
mastersoftware
Aprendiz
Aprendiz


Registrado: Sexta-Feira, 30 de Mai de 2008
Mensagens: 182

MensagemEnviada: Sex Out 04, 2019 9:42 am    Assunto: Responder com Citação

Show vou verificar.

Obrigado.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
marcieldeg
Colaborador
Colaborador


Registrado: Terça-Feira, 5 de Abril de 2011
Mensagens: 1015
Localização: Vitória - ES

MensagemEnviada: Dom Out 27, 2019 5:23 pm    Assunto: Re: Escrever arquivo texto com milhões de linhas Responder com Citação

mastersoftware escreveu:
Bom dia pessoal,
Tenho uma tabela do banco de dados para escrever em um arquivo texto, que tem 6 milhões de linhas.
Da seguinte maneira abaixo :

While not tabvendas.eof do
begin
AssignFile(arqBackup, FsNomeArquivo);
if not FileExists(FsNomeArquivo) then
Rewrite(arqBackup)
else
Append(arqBackup);


WriteLn(arqBackup, sStringSql);

tabvendas.next;
end;

Realizando testes, descobri que este aquivo demora demais pra ser escrito linha a linha, ( cerca de 6 horas ).
Gostaria de saber com o pessoal do fórum.
Existe alguma maneira que consiga realizar esta tarefa de uma forma mais rápida ?

Obrigado.


Amigo, o problema é que você está abrindo o arquivo a cada iteração do loop. Essa operação, apesar de individualmente ser rápida, fica lenta ao ser executada inúmeras vezes.

Tente assim que notará melhora no resultado:

Código:
AssignFile(arqBackup, FsNomeArquivo);
if not FileExists(FsNomeArquivo) then
  Rewrite(arqBackup)
else
  Append(arqBackup);

while not tabvendas.eof do
begin
  WriteLn(arqBackup, sStringSql);
  tabvendas.Next;
end;

CloseFile(arqBackup);

_________________
"Olha a interface da IDE! Será que ela é? Será que ela é? DELPHI!"
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB