Fórum COMO EVITAR DE APAGAR O BANCO SEMPRE QUE FOR FAZER UMA NOVA IMPORTAÇÃO? #558762
30/06/2016
0
Bom dia, eu estou realizando a importação do banco antigo para o banco novo, isso está sendo feito em etapas com uma tabela por vez repeitando as respectivas dependências, isso me cria uma certa dificuldade já que sempre que realizo um teste os dados das tabelas que já migram com sucesso voltam a ser migrados e a primeira coisa que ocorre são erros de chave primaria, de maneira rustica eu optei por sempre depois de um teste deletar o banco para que no teste seguinte as tabelas estejam vazias, isso resolve mas me cria um consumo de tempo gigante.
preciso de algo que identifique as tabelas que já migraram com sucesso e as ignore seguindo em ordem para a próxima tabela e assim por diante, vou deixar um trecho do código das tabelas que já são migradas sem problemas
separei o inicio de tudo e na sequência a baixo estão as tabelas de GRUPOS, PERMISSOES e MOVIM_PROD, a lógica é uma só para cada uma das tabelas embora exista casos onde eu realizo alguns tratamentos dentro do TRY, nada de mais.
//---------------- INÍCIO DO PROCESSO DE SINCRONIZAÇÃO DA TABELA GRUPOS--------------------------------------------------
try
lblStatus.Caption := 'Iniciando processo de sincronia... Aguarde....' ;
Application.ProcessMessages;
pbStatus.Position:=pbStatus.Position+1;
Sleep(0);
lblStatus.Caption := 'Sincronizando tabela Grupos...';
Application.ProcessMessages;
DtMdl.FDGruposVelho.Active := False; //BD ANTIGO QUE ENVIARÁ OS DADOS PARA O NOVO
DtMdl.FDGruposVelho.Active := True;
DtMdl.FDGruposVelho.First;
DtMdl.FDGruposNovo.Active := False;
DtMdl.FDGruposNovo.Active := True;
while not DtMdl.FDGruposVelho.Eof do
begin
DtMdl.FDGruposNovo.Insert;
DtMdl.FDGruposNovoGR_NUMERO.Value := DtMdl.FDGruposVelhoCODIGO.Value;
DtMdl.FDGruposNovoGR_GRUPO.Value := DtMdl.FDGruposVelhoNOME_GRUPO.Value;
DtMdl.FDGruposNovo.Post;
DtMdl.FDGruposVelho.Next;
end;
DtMdl.FB_DataBaseNew.CommitRetaining;
Sleep(0);
lblStatus.Caption := 'Sincronização tabela Grupos concluída.';
Application.ProcessMessages;
except
on E : Exception do
begin
DtMdl.FB_DataBaseNew.RollbackRetaining;
application.MessageBox(pchar('Problemas durante a migração dos dados' +#13+#13+ 'Descrição do erro: '+#13+#13+E.Message+#13+#13+'Tentativa de sincronização cancelada'), 'AVISO', mb_OK + MB_ICONERROR);
if DtMdl.FDGruposNovo.State = dsInsert then
DtMdl.FDGruposNovo.Cancel;
//abort;
end;
end;
//---------------- INÍCIO DO PROCESSO DE SINCRONIZAÇÃO DA TABELA PERMISSÕES---------------------------------------------
try
lblStatus.Caption := 'Iniciando processo de sincronia... Aguarde....' ;
Application.ProcessMessages;
pbStatus.Position:=pbStatus.Position+1;
Sleep(0);
lblStatus.Caption := 'Sincronizando tabela PERMISSÕES...';
Application.ProcessMessages;
DtMdl.FDPermissoesVelho.Active := False; //BD ANTIGO QUE ENVIARÁ OS DADOS PARA O NOVO
DtMdl.FDPermissoesVelho.Active := True;
DtMdl.FDPermissoesVelho.First;
DtMdl.FDPermissoesNovo.Active := False;
DtMdl.FDPermissoesNovo.Active := True;
while not DtMdl.FDPermissoesVelho.Eof do
begin
DtMdl.FDPermissoesNovo.Insert;
DtMdl.FDPermissoesNovoPE_CODGRUPO.Value := DtMdl.FDPermissoesVelhoCOD_GRUPO.Value;
DtMdl.FDPermissoesNovoPE_TAG.Value := DtMdl.FDPermissoesVelhoTAG.Value;
DtMdl.FDPermissoesNovo.Post;
DtMdl.FDPermissoesVelho.Next;
end;
DtMdl.FB_DataBaseNew.CommitRetaining;
Sleep(0);
lblStatus.Caption := 'Sincronização tabela de PERMISSÕES concluída.';
Application.ProcessMessages;
except
on E : Exception do
begin
DtMdl.FB_DataBaseNew.RollbackRetaining;
application.MessageBox(pchar('Problemas durante a migração dos dados' +#13+#13+ 'Descrição do erro: '+#13+#13+E.Message+#13+#13+'Tentativa de sincronização cancelada'), 'AVISO', mb_OK + MB_ICONERROR);
if DtMdl.FDGruposNovo.State = dsInsert then
DtMdl.FDGruposNovo.Cancel;
//abort;
end;
end;
//---------------- INÍCIO DO PROCESSO DE SINCRONIZAÇÃO DA TABELA MOVIM_PROD---------------------------------------------
try
lblStatus.Caption := 'Iniciando processo de sincronia... Aguarde....' ;
Application.ProcessMessages;
pbStatus.Position:=pbStatus.Position+1;
Sleep(0);
lblStatus.Caption := 'Sincronizando tabela MOVIM_PROD...';
Application.ProcessMessages;
DtMdl.FDMovim_ProdVelho.Active := False; //BD ANTIGO QUE ENVIARÁ OS DADOS PARA O NOVO
DtMdl.FDMovim_ProdVelho.Active := True;
DtMdl.FDMovim_ProdVelho.First;
DtMdl.FDMovim_ProdNovo.Active := False;
DtMdl.FDMovim_ProdNovo.Active := True;
while not DtMdl.FDMovim_ProdVelho.Eof do
begin
DtMdl.FDMovim_ProdNovo.Insert;
DtMdl.FDMovim_ProdNovoMP_NUMERO.Value := DtMdl.FDMovim_ProdVelhoMP_NUMERO.Value;
DtMdl.FDMovim_ProdNovoMP_DATA.Value := DtMdl.FDMovim_ProdVelhoMP_DATA.Value;
DtMdl.FDMovim_ProdNovoMP_TIPO.Value := DtMdl.FDMovim_ProdVelhoMP_TIPO.Value;
DtMdl.FDMovim_ProdNovoMP_NATUREZA.Value := DtMdl.FDMovim_ProdVelhoMP_NATUREZA.Value;
DtMdl.FDMovim_ProdNovoMP_FIXO.Value := DtMdl.FDMovim_ProdVelhoMP_FIXO.Value;
DtMdl.FDMovim_ProdNovoMP_AJUSTE.Value := DtMdl.FDMovim_ProdVelhoMP_AJUSTE.Value;
DtMdl.FDMovim_ProdNovoMP_FORNECEDOR.Value := DtMdl.FDMovim_ProdVelhoMP_FORNECEDOR.Value;
DtMdl.FDMovim_ProdNovoMP_NOTA.Value := DtMdl.FDMovim_ProdVelhoMP_NOTA.Value;
DtMdl.FDMovim_ProdNovoMP_DATANT.Value := DtMdl.FDMovim_ProdVelhoMP_DATANT.Value;
DtMdl.FDMovim_ProdNovoMP_OBS.Value := DtMdl.FDMovim_ProdVelhoMP_OBS.Value;
DtMdl.FDMovim_ProdNovoMP_USUARIO.Value := DtMdl.FDMovim_ProdVelhoMP_USUARIO.Value;
DtMdl.FDMovim_ProdNovoMP_SERIE.Value := DtMdl.FDMovim_ProdVelhoMP_SERIE.Value;
DtMdl.FDMovim_ProdNovoMP_SUBSERIE.Value := DtMdl.FDMovim_ProdVelhoMP_SUBSERIE.Value;
DtMdl.FDMovim_ProdNovoMP_VLCONTABIL.Value := DtMdl.FDMovim_ProdVelhoMP_VLCONTABIL.Value;
DtMdl.FDMovim_ProdNovoMP_VLPRODUTOS.Value := DtMdl.FDMovim_ProdVelhoMP_VLPRODUTOS.Value;
DtMdl.FDMovim_ProdNovoMP_VLDESCONTOS.Value := DtMdl.FDMovim_ProdVelhoMP_VLDESCONTOS.Value;
DtMdl.FDMovim_ProdNovoMP_ALIQICMS.Value := DtMdl.FDMovim_ProdVelhoMP_ALIQICMS.Value;
DtMdl.FDMovim_ProdNovoMP_VLFRETE.Value := DtMdl.FDMovim_ProdVelhoMP_VLFRETE.Value;
DtMdl.FDMovim_ProdNovoMP_VLSEGURO.Value := DtMdl.FDMovim_ProdVelhoMP_VLSEGURO.Value;
DtMdl.FDMovim_ProdNovoMP_VLOUTRASDESP.Value := DtMdl.FDMovim_ProdVelhoMP_VLOUTRASDESP.Value;
DtMdl.FDMovim_ProdNovoMP_BASEICMS.Value := DtMdl.FDMovim_ProdVelhoMP_BASEICMS.Value;
DtMdl.FDMovim_ProdNovoMP_VALICMS.Value := DtMdl.FDMovim_ProdVelhoMP_VALICMS.Value;
DtMdl.FDMovim_ProdNovoMP_ISENICMS.Value := DtMdl.FDMovim_ProdVelhoMP_ISENICMS.Value;
DtMdl.FDMovim_ProdNovoMP_PRAZO.Value := DtMdl.FDMovim_ProdVelhoMP_PRAZO.Value;
DtMdl.FDMovim_ProdNovoMP_CHAVE.Value := DtMdl.FDMovim_ProdVelhoMP_CHAVE.Value;
DtMdl.FDMovim_ProdNovoMP_ARQUIVO.Value := DtMdl.FDMovim_ProdVelhoMP_ARQUIVO.Value;
DtMdl.FDMovim_ProdNovoMP_ARQUIVADA.Value := DtMdl.FDMovim_ProdVelhoMP_ARQUIVADA.Value;
DtMdl.FDMovim_ProdNovoMP_MODELO.Value := DtMdl.FDMovim_ProdVelhoMP_MODELO.Value;
DtMdl.FDMovim_ProdNovoMP_FINALCNPJ.Value := DtMdl.FDMovim_ProdVelhoMP_FINALCNPJ.Value;
DtMdl.FDMovim_ProdNovoMP_EFETIVADO.Value := DtMdl.FDMovim_ProdVelhoMP_EFETIVADO.Value;
DtMdl.FDMovim_ProdNovoMP_DESPEXTRAS.Value := DtMdl.FDMovim_ProdVelhoMP_DESPEXTRAS.Value;
DtMdl.FDMovim_ProdNovo.Post;
DtMdl.FDMovim_ProdVelho.Next;
end;
DtMdl.FB_DataBaseNew.CommitRetaining;
Sleep(0);
lblStatus.Caption := 'Sincronização tabela de MOVIM_PROD concluída.';
Application.ProcessMessages;
except
on E : Exception do
begin
DtMdl.FB_DataBaseNew.RollbackRetaining;
application.MessageBox(pchar('Problemas durante a migração dos dados' +#13+#13+
'Descrição do erro: '+#13+#13+E.Message+#13+#13+'Tentativa de sincronização cancelada'), 'AVISO', mb_OK + MB_ICONERROR);
if DtMdl.FDMovim_ProdNovo.State = dsInsert then
DtMdl.FDMovim_ProdNovo.Cancel;
end;
end;
preciso de algo que identifique as tabelas que já migraram com sucesso e as ignore seguindo em ordem para a próxima tabela e assim por diante, vou deixar um trecho do código das tabelas que já são migradas sem problemas
separei o inicio de tudo e na sequência a baixo estão as tabelas de GRUPOS, PERMISSOES e MOVIM_PROD, a lógica é uma só para cada uma das tabelas embora exista casos onde eu realizo alguns tratamentos dentro do TRY, nada de mais.
//---------------- INÍCIO DO PROCESSO DE SINCRONIZAÇÃO DA TABELA GRUPOS--------------------------------------------------
try
lblStatus.Caption := 'Iniciando processo de sincronia... Aguarde....' ;
Application.ProcessMessages;
pbStatus.Position:=pbStatus.Position+1;
Sleep(0);
lblStatus.Caption := 'Sincronizando tabela Grupos...';
Application.ProcessMessages;
DtMdl.FDGruposVelho.Active := False; //BD ANTIGO QUE ENVIARÁ OS DADOS PARA O NOVO
DtMdl.FDGruposVelho.Active := True;
DtMdl.FDGruposVelho.First;
DtMdl.FDGruposNovo.Active := False;
DtMdl.FDGruposNovo.Active := True;
while not DtMdl.FDGruposVelho.Eof do
begin
DtMdl.FDGruposNovo.Insert;
DtMdl.FDGruposNovoGR_NUMERO.Value := DtMdl.FDGruposVelhoCODIGO.Value;
DtMdl.FDGruposNovoGR_GRUPO.Value := DtMdl.FDGruposVelhoNOME_GRUPO.Value;
DtMdl.FDGruposNovo.Post;
DtMdl.FDGruposVelho.Next;
end;
DtMdl.FB_DataBaseNew.CommitRetaining;
Sleep(0);
lblStatus.Caption := 'Sincronização tabela Grupos concluída.';
Application.ProcessMessages;
except
on E : Exception do
begin
DtMdl.FB_DataBaseNew.RollbackRetaining;
application.MessageBox(pchar('Problemas durante a migração dos dados' +#13+#13+ 'Descrição do erro: '+#13+#13+E.Message+#13+#13+'Tentativa de sincronização cancelada'), 'AVISO', mb_OK + MB_ICONERROR);
if DtMdl.FDGruposNovo.State = dsInsert then
DtMdl.FDGruposNovo.Cancel;
//abort;
end;
end;
//---------------- INÍCIO DO PROCESSO DE SINCRONIZAÇÃO DA TABELA PERMISSÕES---------------------------------------------
try
lblStatus.Caption := 'Iniciando processo de sincronia... Aguarde....' ;
Application.ProcessMessages;
pbStatus.Position:=pbStatus.Position+1;
Sleep(0);
lblStatus.Caption := 'Sincronizando tabela PERMISSÕES...';
Application.ProcessMessages;
DtMdl.FDPermissoesVelho.Active := False; //BD ANTIGO QUE ENVIARÁ OS DADOS PARA O NOVO
DtMdl.FDPermissoesVelho.Active := True;
DtMdl.FDPermissoesVelho.First;
DtMdl.FDPermissoesNovo.Active := False;
DtMdl.FDPermissoesNovo.Active := True;
while not DtMdl.FDPermissoesVelho.Eof do
begin
DtMdl.FDPermissoesNovo.Insert;
DtMdl.FDPermissoesNovoPE_CODGRUPO.Value := DtMdl.FDPermissoesVelhoCOD_GRUPO.Value;
DtMdl.FDPermissoesNovoPE_TAG.Value := DtMdl.FDPermissoesVelhoTAG.Value;
DtMdl.FDPermissoesNovo.Post;
DtMdl.FDPermissoesVelho.Next;
end;
DtMdl.FB_DataBaseNew.CommitRetaining;
Sleep(0);
lblStatus.Caption := 'Sincronização tabela de PERMISSÕES concluída.';
Application.ProcessMessages;
except
on E : Exception do
begin
DtMdl.FB_DataBaseNew.RollbackRetaining;
application.MessageBox(pchar('Problemas durante a migração dos dados' +#13+#13+ 'Descrição do erro: '+#13+#13+E.Message+#13+#13+'Tentativa de sincronização cancelada'), 'AVISO', mb_OK + MB_ICONERROR);
if DtMdl.FDGruposNovo.State = dsInsert then
DtMdl.FDGruposNovo.Cancel;
//abort;
end;
end;
//---------------- INÍCIO DO PROCESSO DE SINCRONIZAÇÃO DA TABELA MOVIM_PROD---------------------------------------------
try
lblStatus.Caption := 'Iniciando processo de sincronia... Aguarde....' ;
Application.ProcessMessages;
pbStatus.Position:=pbStatus.Position+1;
Sleep(0);
lblStatus.Caption := 'Sincronizando tabela MOVIM_PROD...';
Application.ProcessMessages;
DtMdl.FDMovim_ProdVelho.Active := False; //BD ANTIGO QUE ENVIARÁ OS DADOS PARA O NOVO
DtMdl.FDMovim_ProdVelho.Active := True;
DtMdl.FDMovim_ProdVelho.First;
DtMdl.FDMovim_ProdNovo.Active := False;
DtMdl.FDMovim_ProdNovo.Active := True;
while not DtMdl.FDMovim_ProdVelho.Eof do
begin
DtMdl.FDMovim_ProdNovo.Insert;
DtMdl.FDMovim_ProdNovoMP_NUMERO.Value := DtMdl.FDMovim_ProdVelhoMP_NUMERO.Value;
DtMdl.FDMovim_ProdNovoMP_DATA.Value := DtMdl.FDMovim_ProdVelhoMP_DATA.Value;
DtMdl.FDMovim_ProdNovoMP_TIPO.Value := DtMdl.FDMovim_ProdVelhoMP_TIPO.Value;
DtMdl.FDMovim_ProdNovoMP_NATUREZA.Value := DtMdl.FDMovim_ProdVelhoMP_NATUREZA.Value;
DtMdl.FDMovim_ProdNovoMP_FIXO.Value := DtMdl.FDMovim_ProdVelhoMP_FIXO.Value;
DtMdl.FDMovim_ProdNovoMP_AJUSTE.Value := DtMdl.FDMovim_ProdVelhoMP_AJUSTE.Value;
DtMdl.FDMovim_ProdNovoMP_FORNECEDOR.Value := DtMdl.FDMovim_ProdVelhoMP_FORNECEDOR.Value;
DtMdl.FDMovim_ProdNovoMP_NOTA.Value := DtMdl.FDMovim_ProdVelhoMP_NOTA.Value;
DtMdl.FDMovim_ProdNovoMP_DATANT.Value := DtMdl.FDMovim_ProdVelhoMP_DATANT.Value;
DtMdl.FDMovim_ProdNovoMP_OBS.Value := DtMdl.FDMovim_ProdVelhoMP_OBS.Value;
DtMdl.FDMovim_ProdNovoMP_USUARIO.Value := DtMdl.FDMovim_ProdVelhoMP_USUARIO.Value;
DtMdl.FDMovim_ProdNovoMP_SERIE.Value := DtMdl.FDMovim_ProdVelhoMP_SERIE.Value;
DtMdl.FDMovim_ProdNovoMP_SUBSERIE.Value := DtMdl.FDMovim_ProdVelhoMP_SUBSERIE.Value;
DtMdl.FDMovim_ProdNovoMP_VLCONTABIL.Value := DtMdl.FDMovim_ProdVelhoMP_VLCONTABIL.Value;
DtMdl.FDMovim_ProdNovoMP_VLPRODUTOS.Value := DtMdl.FDMovim_ProdVelhoMP_VLPRODUTOS.Value;
DtMdl.FDMovim_ProdNovoMP_VLDESCONTOS.Value := DtMdl.FDMovim_ProdVelhoMP_VLDESCONTOS.Value;
DtMdl.FDMovim_ProdNovoMP_ALIQICMS.Value := DtMdl.FDMovim_ProdVelhoMP_ALIQICMS.Value;
DtMdl.FDMovim_ProdNovoMP_VLFRETE.Value := DtMdl.FDMovim_ProdVelhoMP_VLFRETE.Value;
DtMdl.FDMovim_ProdNovoMP_VLSEGURO.Value := DtMdl.FDMovim_ProdVelhoMP_VLSEGURO.Value;
DtMdl.FDMovim_ProdNovoMP_VLOUTRASDESP.Value := DtMdl.FDMovim_ProdVelhoMP_VLOUTRASDESP.Value;
DtMdl.FDMovim_ProdNovoMP_BASEICMS.Value := DtMdl.FDMovim_ProdVelhoMP_BASEICMS.Value;
DtMdl.FDMovim_ProdNovoMP_VALICMS.Value := DtMdl.FDMovim_ProdVelhoMP_VALICMS.Value;
DtMdl.FDMovim_ProdNovoMP_ISENICMS.Value := DtMdl.FDMovim_ProdVelhoMP_ISENICMS.Value;
DtMdl.FDMovim_ProdNovoMP_PRAZO.Value := DtMdl.FDMovim_ProdVelhoMP_PRAZO.Value;
DtMdl.FDMovim_ProdNovoMP_CHAVE.Value := DtMdl.FDMovim_ProdVelhoMP_CHAVE.Value;
DtMdl.FDMovim_ProdNovoMP_ARQUIVO.Value := DtMdl.FDMovim_ProdVelhoMP_ARQUIVO.Value;
DtMdl.FDMovim_ProdNovoMP_ARQUIVADA.Value := DtMdl.FDMovim_ProdVelhoMP_ARQUIVADA.Value;
DtMdl.FDMovim_ProdNovoMP_MODELO.Value := DtMdl.FDMovim_ProdVelhoMP_MODELO.Value;
DtMdl.FDMovim_ProdNovoMP_FINALCNPJ.Value := DtMdl.FDMovim_ProdVelhoMP_FINALCNPJ.Value;
DtMdl.FDMovim_ProdNovoMP_EFETIVADO.Value := DtMdl.FDMovim_ProdVelhoMP_EFETIVADO.Value;
DtMdl.FDMovim_ProdNovoMP_DESPEXTRAS.Value := DtMdl.FDMovim_ProdVelhoMP_DESPEXTRAS.Value;
DtMdl.FDMovim_ProdNovo.Post;
DtMdl.FDMovim_ProdVelho.Next;
end;
DtMdl.FB_DataBaseNew.CommitRetaining;
Sleep(0);
lblStatus.Caption := 'Sincronização tabela de MOVIM_PROD concluída.';
Application.ProcessMessages;
except
on E : Exception do
begin
DtMdl.FB_DataBaseNew.RollbackRetaining;
application.MessageBox(pchar('Problemas durante a migração dos dados' +#13+#13+
'Descrição do erro: '+#13+#13+E.Message+#13+#13+'Tentativa de sincronização cancelada'), 'AVISO', mb_OK + MB_ICONERROR);
if DtMdl.FDMovim_ProdNovo.State = dsInsert then
DtMdl.FDMovim_ProdNovo.Cancel;
end;
end;
Emanuel Gonçalves
Curtir tópico
+ 0
Responder
Posts
30/06/2016
Raimundo Pereira
Uma tabela com o ultimo registro importado resolve
Exemplo tenho o sistema que em determinado tempo do dia eu executo o mesmo.
A mesmo tem por objetivo de carregar no listbox o diretorio de XML de notas fiscal.
O diretório é de acordo por período
Exemplo 201606 e assim por diante.
Então fiz o seguinte.
Criei uma tabela "Registros" com o campo período e ultimo_registro
Criei uma variável no form com o mesmo nome "ultimo_registro" do tipo integer;
1. Atualizo minha variável
DM.Registros.CLOSE;
DM.Registros.OPEN;
FRM.ultimo_registro= DM.Registros.FIELBYNAME('ultimo_registro').ASINTEGER; //
2. Realiza o refresh no listbox .
3. Seto o index do listbox para o ultimo_registro
listbox.index:=FRM.ultimo_registro;
Tenho 5800 arquivos xml dentro do listbox, se realizar um for
Realizando vários procedimentos inclusive
verificando se o arquivo já existe vou ter perda de tempo, pois são 5800 arquivos.
Agora eu registrei na minha tabela meu ultimo registrado é 5200, esse valor foi atualizado na minha tabela de registro no final, sempre que eu rodo aplicação.
Então na próxima vez que eu rodar minha aplicação ela só vai importar 600 registros ao invés de 5800
Este exemplo é apenas uma luz para que você possa pensar em melhorar e ter mais performance.
Exemplo tenho o sistema que em determinado tempo do dia eu executo o mesmo.
A mesmo tem por objetivo de carregar no listbox o diretorio de XML de notas fiscal.
O diretório é de acordo por período
Exemplo 201606 e assim por diante.
Então fiz o seguinte.
Criei uma tabela "Registros" com o campo período e ultimo_registro
Criei uma variável no form com o mesmo nome "ultimo_registro" do tipo integer;
1. Atualizo minha variável
DM.Registros.CLOSE;
DM.Registros.OPEN;
FRM.ultimo_registro= DM.Registros.FIELBYNAME('ultimo_registro').ASINTEGER; //
2. Realiza o refresh no listbox .
3. Seto o index do listbox para o ultimo_registro
listbox.index:=FRM.ultimo_registro;
Tenho 5800 arquivos xml dentro do listbox, se realizar um for
Realizando vários procedimentos inclusive
verificando se o arquivo já existe vou ter perda de tempo, pois são 5800 arquivos.
Agora eu registrei na minha tabela meu ultimo registrado é 5200, esse valor foi atualizado na minha tabela de registro no final, sempre que eu rodo aplicação.
Então na próxima vez que eu rodar minha aplicação ela só vai importar 600 registros ao invés de 5800
Este exemplo é apenas uma luz para que você possa pensar em melhorar e ter mais performance.
Responder
Gostei + 0
30/06/2016
Emanuel Gonçalves
ok, grato
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)