Importar para dbf e depois gerar novo txt
Moderador: Moderadores
-
paulooc
- Usuário Nível 1

- Mensagens: 6
- Registrado em: 25 Fev 2014 08:27
- Localização: Vitoria de Santo antao -PE
Importar para dbf e depois gerar novo txt
Bom dia sou novo no clipper e estou com dificuldade para importar um txt com tamanho de campo variável delimitado por "|" .
é o seguinte tenho um arquivo enorme que precisa ser importado para outro sistema. quem desenvolveu não colocou par importar por período.
então tive a brilhante ideia de importar para um dbf indexar por data e hora e depois exportar para txt no mesmo formato apenas o período desejado.
consegui importar a linha toda para o dbf. mas gostaria de importar campo a a campo.
Segue exemplo do txt o origem
[1] JB - EXPORTAÇÃO CELPE|4502.399795532227|18/02/2014 01:30:00
[1] JB - EXPORTAÇÃO CELPE|3863.999824523926|18/02/2014 01:45:00
[1] JB - EXPORTAÇÃO CELPE|3964.799819946289|18/02/2014 02:00:00
[1] JB - EXPORTAÇÃO CELPE|2839.199871063232|18/02/2014 02:15:00
[1] JB - EXPORTAÇÃO CELPE|1562.399929046631|18/02/2014 02:30:00
[1] JB - EXPORTAÇÃO CELPE|2822.399871826172|18/02/2014 02:45:00
[1] JB - EXPORTAÇÃO CELPE|2906.399868011475|18/02/2014 03:00:00
[1] JB - EXPORTAÇÃO CELPE|3729.599830627441|18/02/2014 03:15:00
[1] JB - EXPORTAÇÃO CELPE|0.000000000000|18/02/2014 03:30:00
[1] JB - EXPORTAÇÃO CELPE|0.000000000000|18/02/2014 03:45:00
[1] JB - EXPORTAÇÃO CELPE|0.000000000000|18/02/2014 04:00:00
[1] JB - EXPORTAÇÃO CELPE|0.000000000000|18/02/2014 04:15:00
[1] JB - EXPORTAÇÃO CELPE|0.000000000000|18/02/2014 04:30:00
[1] JB - EXPORTAÇÃO CELPE|0.000000000000|18/02/2014 04:45:00
[1] JB - EXPORTAÇÃO CELPE|0.000000000000|18/02/2014 05:00:00
Alguém poderia me ajudar ?
é o seguinte tenho um arquivo enorme que precisa ser importado para outro sistema. quem desenvolveu não colocou par importar por período.
então tive a brilhante ideia de importar para um dbf indexar por data e hora e depois exportar para txt no mesmo formato apenas o período desejado.
consegui importar a linha toda para o dbf. mas gostaria de importar campo a a campo.
Segue exemplo do txt o origem
[1] JB - EXPORTAÇÃO CELPE|4502.399795532227|18/02/2014 01:30:00
[1] JB - EXPORTAÇÃO CELPE|3863.999824523926|18/02/2014 01:45:00
[1] JB - EXPORTAÇÃO CELPE|3964.799819946289|18/02/2014 02:00:00
[1] JB - EXPORTAÇÃO CELPE|2839.199871063232|18/02/2014 02:15:00
[1] JB - EXPORTAÇÃO CELPE|1562.399929046631|18/02/2014 02:30:00
[1] JB - EXPORTAÇÃO CELPE|2822.399871826172|18/02/2014 02:45:00
[1] JB - EXPORTAÇÃO CELPE|2906.399868011475|18/02/2014 03:00:00
[1] JB - EXPORTAÇÃO CELPE|3729.599830627441|18/02/2014 03:15:00
[1] JB - EXPORTAÇÃO CELPE|0.000000000000|18/02/2014 03:30:00
[1] JB - EXPORTAÇÃO CELPE|0.000000000000|18/02/2014 03:45:00
[1] JB - EXPORTAÇÃO CELPE|0.000000000000|18/02/2014 04:00:00
[1] JB - EXPORTAÇÃO CELPE|0.000000000000|18/02/2014 04:15:00
[1] JB - EXPORTAÇÃO CELPE|0.000000000000|18/02/2014 04:30:00
[1] JB - EXPORTAÇÃO CELPE|0.000000000000|18/02/2014 04:45:00
[1] JB - EXPORTAÇÃO CELPE|0.000000000000|18/02/2014 05:00:00
Alguém poderia me ajudar ?
Importar para dbf e depois gerar novo txt
Paulo, me passe seu email.
Não estou conseguindo publicar uma resposta no Fórum...
Não estou conseguindo publicar uma resposta no Fórum...
Importar para dbf e depois gerar novo txt
Paulo, mandei pro seu email.
Se tiver algum MODERADOR no ar, por favor dê uma olhada: não consigo postar (a não ser pequenas mensagens).
Se tiver algum MODERADOR no ar, por favor dê uma olhada: não consigo postar (a não ser pequenas mensagens).
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Importar para dbf e depois gerar novo txt
Olá!
Recentemente estava dando o erro "Forbidden..." quando se postava código, principalmente com a palavra FOpen() mas agora coloquei e não deu erro. O Alexandre Simões teve problemas semelhantes também.
O Toledo havia aberto um chamado onde ele faz o hosting do site. Devem estar ajustando.
Recentemente estava dando o erro "Forbidden..." quando se postava código, principalmente com a palavra FOpen() mas agora coloquei e não deu erro. O Alexandre Simões teve problemas semelhantes também.
O Toledo havia aberto um chamado onde ele faz o hosting do site. Devem estar ajustando.
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Importar para dbf e depois gerar novo txt
Eolo, acho que o servidor onde o fórum está hospedado passou por algumas configurações de segurança, então algumas palavras estava provocando um erro de permissão "Forbidden...". Na semana passada, se no conteúdo da mensagem ou arquivo anexo continha as palavras FOPEN e cmd.exe, provocava este erro.Eolo escreveu:Se tiver algum MODERADOR no ar, por favor dê uma olhada: não consigo postar (a não ser pequenas mensagens).
Tenho um chamado em aberto com o suporte do servidor, então se você puder enviar o arquivo para o meu e-mail suporte [a] pctoledo.com.br, vou tentar descobrir qual comando está provocando este erro.
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Importar para dbf e depois gerar novo txt
Coloquei todas as funções f() com espaços no meio do nome. Vamos ver se passa.
Código: Selecionar todos
arqh=fopen('c:\arquivo.txt',2) // mude o path e nome do arquivo
if !arqh>0 // erro abertura
quit
endi
tamanho=fseek(arqh,0,2)
fseek(arqh,0)
bufer=space(1)
estru:={}
aadd(estru,{"campo1","C",50,0})
aadd(estru,{"campo2","C",50,0})
aadd(estru,{"campo3","C",50,0})
dbcreate("C:\ARQUIVO",estru) // idem
use c:\arquivo excl
campo:=1
pedaco:=""
for n=1 to tamanho
fread(arqh,@bufer,1)
if bufer="|"
if campo=1
appe blan
repl campo1 with pedaco
campo++
pedaco:=""
elseif campo=2
repl campo2 with pedaco
campo++
pedaco:=""
endi
elseif (bufer=chr(13) .or. bufer=chr(10))
if campo=3
repl campo3 with pedaco
campo:=1
pedaco:=""
endi
else
pedaco=pedaco+bufer
endi
fseek(arqh,n,0)
next
use
fclose(arqh)
Importar para dbf e depois gerar novo txt
Toledo, tentei isolar só o F O P E N, mas continuou dando o "Forbidden". Agora, coloquei espaço em todos nomes das funções F() e passou...
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Importar para dbf e depois gerar novo txt
Eolo, o comando que está dando o erro é o F R E A D().
Obs.: editei sua mensagem corrigindo os demais comandos. Tirei os espaços.
Abraços,
Obs.: editei sua mensagem corrigindo os demais comandos. Tirei os espaços.
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Importar para dbf e depois gerar novo txt
Paulo, acabei esquecendo do retorno (DBF pra TXT).Toledo: o F W R I T E e/ou FCREATE está causando também o Forbidden.
Tem um comando ou função que exporta direto, mas eu nunca usei. Prefiro ir "na unha", aí sei o que está sendo exportado.
A propósito: precisa confirmar como é feita a quebra de linha no TXT original, se é chr(13), chr(13)+chr(10), chr(10)+chr(13) ou chr(10)... Precisa fazer igual neste retorno, já que o TXT vai ser importado pelo outro sistema. Se o outro sistema espera chr(13)+chr(10) e você usar só o chr(13), pode dar pau.
Além disso, este exemplo também inclui um chr(13) na última linha. De novo, precisa confirmar se o outro sistema não vai achar ruim.
Código: Selecionar todos
* DBF para TXT
arqh=fcreate('c:\arquivo2.txt',0)
if !arqh>0 // erro criação
quit
endi
use c:\arquivo excl
go top
do whil !eof()
txt=campo1+"|"+campo2+"|"+campo3+chr(13)
* veja observação acima
gravou=fwrite(arqh,txt)
if !gravou=len(txt) // erro de gravação
quit
endi
skip
endd
use
fclose(arqh)- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Importar para dbf e depois gerar novo txt
O arquivo TXT que colocou está completo com todos os campos?
Precisa separar pelo dia/mês/ano?
Então esqueça qualquer programa, e use apenas o sistema operacional.
TYPE seuarquivo.txt | FIND "18/02/2014" > novoarquivo.txt
explicação:
TYPE lista na tela
o | faz com que o texto ao ínvés de ir pra tela vá para o FIND.EXE
FIND "18/02/2014" vai deixar passar somente a linha que contiver esse texto
> novoarquivo.txt vai gravar o resultado em novoarquivo.txt
E se quiser o resultado em ordem alfabética, ainda pode direcionar para o SORT.EXE... rs
E se quiser sumir com alguma coisa, também dá, é só acrescentar /v.
Supondo que fosse pra sumir com um CNPJ:
TYPE seuarquivo.txt | FIND /v "22.222.222/2222-11" > novoarquivo.txt
Testei agora aqui no Windows 7 64 bits, que também tem isso.
Precisa separar pelo dia/mês/ano?
Então esqueça qualquer programa, e use apenas o sistema operacional.
TYPE seuarquivo.txt | FIND "18/02/2014" > novoarquivo.txt
explicação:
TYPE lista na tela
o | faz com que o texto ao ínvés de ir pra tela vá para o FIND.EXE
FIND "18/02/2014" vai deixar passar somente a linha que contiver esse texto
> novoarquivo.txt vai gravar o resultado em novoarquivo.txt
E se quiser o resultado em ordem alfabética, ainda pode direcionar para o SORT.EXE... rs
E se quiser sumir com alguma coisa, também dá, é só acrescentar /v.
Supondo que fosse pra sumir com um CNPJ:
TYPE seuarquivo.txt | FIND /v "22.222.222/2222-11" > novoarquivo.txt
Testei agora aqui no Windows 7 64 bits, que também tem isso.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Importar para dbf e depois gerar novo txt
José Quintas, essa eu não conhecia. Bacana.
Mas faltou um detalhe.
O problema do Paulo:
Como fazer o FIND selecionar um PERÍODO?
Mas faltou um detalhe.
O problema do Paulo:
A sua dica do FIND pega só um dia.quem desenvolveu não colocou par importar por PERÍODO
Como fazer o FIND selecionar um PERÍODO?
Além disso, tem alguma opção pra definir como será a quebra de linha no arquivo destino?FIND "18/02/2014" vai deixar passar somente a linha que contiver esse texto
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Importar para dbf e depois gerar novo txt
pra pegar o mês é só colocar o mês: FIND "02/2014"
O fim de linha deve ser o padrão do Windows.
E se precisar pra várias datas, a saída vai ser usar um BAT
O fim de linha deve ser o padrão do Windows.
E se precisar pra várias datas, a saída vai ser usar um BAT
Código: Selecionar todos
FOR %%A IN (01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31) do TYPE arquivo.txt | find "%%a/02/2014" > dia%%a.txt
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Importar para dbf e depois gerar novo txt
Dá pra ir longe, é só ir combinando comandos.
Pra pegar do dia 1 a 5 também dá, com BAT.
> direciona pra um arquivo, apagando
>> acrescenta a um arquivo
INTERVALO.BAT pra escolher dias:
dependendo da necessidade, é mais prático do que fazer programa.
Pra pegar do dia 1 a 5 também dá, com BAT.
> direciona pra um arquivo, apagando
>> acrescenta a um arquivo
INTERVALO.BAT pra escolher dias:
Código: Selecionar todos
del seleção.txt
FOR %%A IN (01 02 03 04 05) do TYPE arquivo.txt | find "%%a/02/2014" >> selecao.txt
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Importar para dbf e depois gerar novo txt
Fugindo um pouco do tópico, mas no assunto do find, antigamente eu usava isto pra procurar coisas nos fontes:
o resultado era uma lista na tela ou arquivo, separada pelo nome do fonte, com as linhas onde há o texto, e numeradas.
Tem até help no bat.
Explicação:
find /i é pra ignorar maiúsculas/minúsculas
find /n é pra sair com o número da linha
%1 é o primeiro parâmetro digitado na linha
%2 é o segundo
%%A é a variável usada no for
Código: Selecionar todos
@echo off
if "%1" == "" goto :help
if "%2" == "" goto :video
if exist %2 del %2
echo Pesquisa efetuada >> %2
echo %1 >> %2
echo. >> %2
for %%a in (*.prg *.ch) do find /i /n "%1" %%a >> %2
goto :fim
:video
for %%a in (*.prg *.ch) do find /i /n "%1" %%a
goto :fim
:help
echo.
echo seek texto destino
echo.
goto :fim
:fim
o resultado era uma lista na tela ou arquivo, separada pelo nome do fonte, com as linhas onde há o texto, e numeradas.
Tem até help no bat.
Explicação:
find /i é pra ignorar maiúsculas/minúsculas
find /n é pra sair com o número da linha
%1 é o primeiro parâmetro digitado na linha
%2 é o segundo
%%A é a variável usada no for
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/