Carregar arquivo texto

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

MarceloHenrique
Usuário Nível 1
Usuário Nível 1
Mensagens: 30
Registrado em: 06 Jul 2004 09:59
Localização: São Paulo - SP

Carregar arquivo texto

Mensagem por MarceloHenrique »

Tenho que carregar um arquivo texto delimitado com ;
Exermplo do conteudo do arquivo a ser importado (arq.txt):
2007-08-15 00:00:54;1187146854;000:00:18;201.163.222.74;0

Não funciona o comando append from arq.txt delimited with ";" - tenho um banco com os campos criados como caractere e apenas a primeira parte é importada com o campo acima - depois do primeiro ; nada é importado.
O que estou fazendo hoje é ler o arquivo texto com fread() e demais comandos, e depois gravando no dbf, mas fica muito lento pelo arquivo texto ser grande (cada linha é bem maior que a mostrada no exemplo)
Conto com a ajuda de vocês.
Obrigado,

Marcelo Henrique
Ademir
Usuário Nível 3
Usuário Nível 3
Mensagens: 170
Registrado em: 31 Jul 2007 16:28
Localização: Porto Ferreira-SP

Mensagem por Ademir »

Boa tarde !

Se não estou enganado, para se converter desta forma cada campo caracter tem que estar separado por aspas.
MarceloHenrique
Usuário Nível 1
Usuário Nível 1
Mensagens: 30
Registrado em: 06 Jul 2004 09:59
Localização: São Paulo - SP

Mensagem por MarceloHenrique »

Neste arquivo os campos caracteres não estão vindo com aspas e a separação está sendo feita com ; por isto não estou conseguindo usar o append from. Por isto ainda não consegui achar uma solução.
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

Mensagem por gvc »

Nos testes com o DBU, só funcionou o append from <arquivo.txt> delimited quando os campos estão entre aspas e separados por virgula.

Se não puder converter assim, uma saida é importar todo o arquivo para um dbf em que cada registro, com um só campo, contem uma linha do arquivo.
Após a importação, rode um loop do inicio ao fim do arquivo, desmontando cada linha, conforme suas regras.
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
Ademir
Usuário Nível 3
Usuário Nível 3
Mensagens: 170
Registrado em: 31 Jul 2007 16:28
Localização: Porto Ferreira-SP

Mensagem por Ademir »

Bom dia a todos !

Marcelo, já tentou usar: APPEND FROM <ARQUIVO.TXT> SDF ?

Crie os campos do DBF de acordo com o TXT, criando um campo Caracter para cada ponto e virgula tambem. Acho que assim deve funcionar.

por exemplo:

2007-08-15 00:00:54;1187146854;000:00:18;201.163.222.74;0

a estrutura do DBF ficaria assim:

CAMPO1 C 19
CAMPO2 C 1
CAMPO3 C 10
CAMPO4 C 1
CAMPO5 C 9
CAMPO6 C 1
CAMPO7 C 14
CAMPO8 C 1
CAMPO9 C 1
MarceloHenrique
Usuário Nível 1
Usuário Nível 1
Mensagens: 30
Registrado em: 06 Jul 2004 09:59
Localização: São Paulo - SP

Mensagem por MarceloHenrique »

1) gvc: Importei apenas como um único campo e deu certo. Diminui o tempo em mais ou menos 70%

2) Ademir: Opção SDF - não posso usar esta opção por que os campos podem ter tamanhos variados e alguns campos virem preenchidos algumas vezes e em outras virem vazios. Não tem tamanho fixo.

Obrigado pelas dicas.

Marcelo Henrique
diogenes_varela
Usuário Nível 3
Usuário Nível 3
Mensagens: 206
Registrado em: 04 Nov 2006 19:33
Localização: Brasília - DF

Mensagem por diogenes_varela »

os campos podem ter tamanhos variados e alguns campos virem preenchidos algumas vezes e em outras virem vazios. Não tem tamanho fixo.
Mesmo os campos vazios teriam dois delimitadores (;) seguidos indicando um campo vazio, não está assim?
Os computadores não sabem o que fazem. Nós, na maioria das vezes, também não...

E disse ao Programador: "Todos os teus programas terão erros e irás corrigi-los até ao fim dos teus dias". Gen. 1:9
Avatar do usuário
JLF
Usuário Nível 2
Usuário Nível 2
Mensagens: 78
Registrado em: 21 Jul 2005 12:52
Localização: Sao Paulo

Re: Carregar arquivo texto

Mensagem por JLF »

Procurei aqui no Fórum e não encontrei a solução para este problema que o amigo tinha em 2007.

Não existe mesmo uma maneira simples de se "importar" um TXT com delimitadores ?

Poxa seria tão simples um comando assim APPEND FROM texto.csv DELIMITED with ";" principalmente quando se tem muitos campos
JLF - relembrando bons tempos
Clipper 5.3 - Blinker 7
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

Re: Carregar arquivo texto

Mensagem por ANDRIL »

Realmente parece que a clausula " DELIMITED with " do APPEND FROM não serve pra nada. O jeito é vc fazer uma rotina para ler o arquivo ( muito dificil visto que nao tem campo de tamanho certo) e outra é vc abrir o arquivo e com STRTRAN() substituir todos ";" por ","

Ate+
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar do usuário
JLF
Usuário Nível 2
Usuário Nível 2
Mensagens: 78
Registrado em: 21 Jul 2005 12:52
Localização: Sao Paulo

Re: Carregar arquivo texto

Mensagem por JLF »

Andril,

Em que me ajudaria trocar os ";" por "," porque isso é facil, eu edito o arquivo em notpad mesmo e mando substituir.
JLF - relembrando bons tempos
Clipper 5.3 - Blinker 7
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

Re: Carregar arquivo texto

Mensagem por ANDRIL »

Nos testes com o DBU, só funcionou o append from <arquivo.txt> delimited quando os campos estão entre aspas e separados por virgula.
Fiz um teste aqui e com campos caracteres sem aspas e delimitados por "," e funcionou normalmente:

use arquivo.dbf
append from arquivo.txt delimited

Todos os campos foram preenchidos como o esperado. Por isso, indiquei a substituição do ";" por ",", pelo menos foi assim que entendi a colocação do colega que abriu o tópico, caso nao seja, desconsiderar.


Ate+
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Responder