Não verifiquei, mas gerei o arquivo novamente, e quando passa de 1.800.000 registros começa a dar erro 1004.alaminojunior escreveu:Este arquivo não está corrompido ? Já verificou com o Filefix ou outro programa.
ERROR BASE/1004
Moderador: Moderadores
-
ALEX170970
- Usuário Nível 1

- Mensagens: 29
- Registrado em: 06 Dez 2007 18:12
- Localização: Santos-SP
Ah, mas então você precisa testar a biblioteca SIX. Ela monta índices compactados e compostos, com várias chaves no mesmo arquivo. A indexação é muitíssimo mais rápida do que com NTX. Pegue a biblioteca do meu site, rode o demo e veja o potencial. A diferença é incrível. Aliás, é rápido pra gerar e rodar o demo. Você não terá que dispor de muito tempo. Vale a pena.ALEX170970 escreveu:Isso mesmo, NTX.Maligno escreveu:Dúvida: você usa NTX?
Só que agora estou trabalhando com o arquivo sem índice, desordenado, pois não consigo ordená-lo.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
- alaminojunior
- Colaborador

- Mensagens: 1717
- Registrado em: 16 Dez 2005 21:26
- Localização: Ubatuba - SP
Alex, vc precisa efetivamente ter todos esses 1.800.000 registros ativos? E em um único DBF? Você os consulta (ou faz qq uso deles) regularmente?
Eu acho sim uma boa idéia trocar o NTX pelo CDX (eu tb fiz isso), mas pra que esperar pela indexação de quase 2 milhões de registros (mesmo com uma RDD veloz) se dá pra quebrar em arquivos menores e/ou mandar coisa velha pro arquivo morto, diminuindo o tamanho das informações ativas e agilizando o processamento?
Um exemplo maluco, para explicar a minha opinião: imagina guardar todos os lançamentos do diário de todos os clientes do seu escritório de contabilidade, de todos os tempo, em um único DBF. Pra que? Melhor ter um DBF para cada exercício e para cada cliente, certo?
Eu acho sim uma boa idéia trocar o NTX pelo CDX (eu tb fiz isso), mas pra que esperar pela indexação de quase 2 milhões de registros (mesmo com uma RDD veloz) se dá pra quebrar em arquivos menores e/ou mandar coisa velha pro arquivo morto, diminuindo o tamanho das informações ativas e agilizando o processamento?
Um exemplo maluco, para explicar a minha opinião: imagina guardar todos os lançamentos do diário de todos os clientes do seu escritório de contabilidade, de todos os tempo, em um único DBF. Pra que? Melhor ter um DBF para cada exercício e para cada cliente, certo?
-
ALEX170970
- Usuário Nível 1

- Mensagens: 29
- Registrado em: 06 Dez 2007 18:12
- Localização: Santos-SP
Eolo:
Na realidade, são mais de 32 milhões de registros de e-mails. Sei que após retirar as duplicidades, ficarão menos de 10 milhões. Necessito que seja um cadastro único, para evitar duplicidades.
Estou frequentemente adicionado novos endereços ao cadastro, e gerando novos arquivos .txt para cada atividade, sem repetições.
O Clipper 5.2 tem suporte a .CDX?
Como fazer para criar este índice?
Na realidade, são mais de 32 milhões de registros de e-mails. Sei que após retirar as duplicidades, ficarão menos de 10 milhões. Necessito que seja um cadastro único, para evitar duplicidades.
Estou frequentemente adicionado novos endereços ao cadastro, e gerando novos arquivos .txt para cada atividade, sem repetições.
O Clipper 5.2 tem suporte a .CDX?
Como fazer para criar este índice?
32 milhões de eMails??? hummmm... :[
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Alex, vc pode ter os 32 milhões de emails, mas NÃO PRECISA SER EM UM ÚNICO ARQUIVO. Quebre em arquivos menores... Imagina o seguinte:
. arquivo EMAIL_A.dbf -> endereços e-mail começando com A
. arquivo EMAIL_B.dbf -> idem com B
. etc.
Com isso, seu 1 DBF de 32 milhões vai se tranformar em 26 arquivos, cada um com 1/26 avos dos registros...
"Ah, mas a distribuição não é uniforme!...". Então que tal o seguinte: crie um arquivo ONDE.dbf, com os campos abaixo.
Pra ver por exemplo se o endereço "eolo.ventura@gmail.com" já está cadastrado, é fácil: primeiro pesquise nos campos INICIO / FIM do arquivo ONDE, pra ver onde esse endereço deveria estar. Aí vc descobre que esse arquivo deveria ser por exemplo o EMAIL111.dbf. Abra então este arquivo (que vai ter digamos 1/100 avos dos 32 milhões) junto com o respectivo indice e faça o SEEK...
Sacou a idéia?
Cara, você tem SÓ 32 milhões de emails? Junte 320 milhões e quebre em arquivos pequenos. Não vai precisar de nenhum novo software. Só usar a imaginação.
Quanto ao CDX, é muito parecido com o NTX. Vai no próximo post.
. arquivo EMAIL_A.dbf -> endereços e-mail começando com A
. arquivo EMAIL_B.dbf -> idem com B
. etc.
Com isso, seu 1 DBF de 32 milhões vai se tranformar em 26 arquivos, cada um com 1/26 avos dos registros...
"Ah, mas a distribuição não é uniforme!...". Então que tal o seguinte: crie um arquivo ONDE.dbf, com os campos abaixo.
Código: Selecionar todos
INICIO FIM ARQUIVO OBS
AA BZ EMAIL001.dbf Emails de AA até BZ, inclusive
CA FZ EMAIL002.dbf Emails de CA até F|, inclusive
etc.Sacou a idéia?
Cara, você tem SÓ 32 milhões de emails? Junte 320 milhões e quebre em arquivos pequenos. Não vai precisar de nenhum novo software. Só usar a imaginação.
Quanto ao CDX, é muito parecido com o NTX. Vai no próximo post.
Editado pela última vez por Eolo em 30 Jan 2008 18:34, em um total de 1 vez.
O CDX é sim muito melhor que o NTX. Muito. E a mudança é mínima.
No início do seu programa, inclua as seguintes linhas:
REQUEST DBFCDX
RddSetDefault("DBFCDX")
O resto (se eu não esqueci de algum pequeno detalhe) é igual.
Código: Selecionar todos
* NTX
use clientes new exl
index on codigo to clientes1
index on nome to clientes2
index on cidade to clientes3
set index to clientes1, clientes2, clientes3
set orde to 1 // por codigo
set orde to 2 // por nome
set orde to 3 // por cidade
* CDX
use clientes new excl
index on codigo tag codigo to clientes
index on nome tag nome to clientes
index on cidade tag cidade to clientes
set index to clientes
set orde to 1 // por codigo
set orde to 2 // por nome
set orde to 3 // por cidadeREQUEST DBFCDX
RddSetDefault("DBFCDX")
O resto (se eu não esqueci de algum pequeno detalhe) é igual.
Alex, complementando, pra ficar mais claro: se vc quer saber se o email "alex@hotmail.com" já está ou não cadastrado, vc vai abrir o arquivo EMAIL_A.dbf... Opa, agora vc quer saber do "zoroastro@hotmail.com"? Abra o EMAIL_Z.dbf...Imagina o seguinte:
. arquivo EMAIL_A.dbf -> endereços e-mail começando com A
. arquivo EMAIL_B.dbf -> idem com B
. etc.
