Carregar arquivo texto
Moderador: Moderadores
-
MarceloHenrique
- Usuário Nível 1

- Mensagens: 30
- Registrado em: 06 Jul 2004 09:59
- Localização: São Paulo - SP
Carregar arquivo texto
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
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
-
MarceloHenrique
- Usuário Nível 1

- Mensagens: 30
- Registrado em: 06 Jul 2004 09:59
- Localização: São Paulo - SP
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.
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}
{POG - Programação Orientada a Gambiarra}
-
Ademir
- Usuário Nível 3

- Mensagens: 170
- Registrado em: 31 Jul 2007 16:28
- Localização: Porto Ferreira-SP
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
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

- Mensagens: 30
- Registrado em: 06 Jul 2004 09:59
- Localização: São Paulo - SP
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
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

- Mensagens: 206
- Registrado em: 04 Nov 2006 19:33
- Localização: Brasília - DF
Mesmo os campos vazios teriam dois delimitadores (;) seguidos indicando um campo vazio, não está assim?os campos podem ter tamanhos variados e alguns campos virem preenchidos algumas vezes e em outras virem vazios. Não tem tamanho fixo.
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
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
Re: Carregar arquivo texto
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
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
Clipper 5.3 - Blinker 7
Re: Carregar arquivo texto
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+
Ate+
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Re: Carregar arquivo texto
Andril,
Em que me ajudaria trocar os ";" por "," porque isso é facil, eu edito o arquivo em notpad mesmo e mando substituir.
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
Clipper 5.3 - Blinker 7
Re: Carregar arquivo texto
Fiz um teste aqui e com campos caracteres sem aspas e delimitados por "," e funcionou normalmente:Nos testes com o DBU, só funcionou o append from <arquivo.txt> delimited quando os campos estão entre aspas e separados por virgula.
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


