copiar un archivo txt a dbf

copiar un archivo txt a dbf

Postby surGom » Mon Jun 23, 2014 12:24 am

En su momento hice consultas sobre este tópico y no pude resolverlo para poder ser utilizado ya que los archivos txt alrededor de 80 megas que corresponden a Impuestos Nacionales y Provinciales. Demoraban una enormidad de tiempo en leerlo y pasarlo a una dbf. Me lo resolvió desde Nicaragua Carlos Vargas y desde hace años lo utilizo. El proceso es rapidísimo tarda a los sumo 10 segundos en pasar el txt a dbf, utilizando visual fox pro, luego como tenía visual fox pro 9, modifique el programa que generosamente me envió (me lo envió con fuentes y dlls), sin tener mucha idea pero logre hacerlo funcionar, para rentas provincia y capital.

Estoy tratando de poder hacerlo solamente con harbour
El archivo sus primeros renglones son

21122012;01012013;31032013;20000009637;C;S;N;6,00;4,50;00;00;AZUACA GUILLERMO
21122012;01012013;31032013;20000241254;D;S;N;6,00;4,50;00;00;RAMOS SANTIAGO JUAN
21122012;01012013;31032013;20000439771;D;S;N;6,00;4,50;00;00;MENDIZABAL,LUIS MARIA
21122012;01012013;31032013;20000561860;D;S;N;6,00;4,50;00;00;CROLERO MANLIO JUAN


Para que tengan una idea son 436536 líneas. (Y este es el mas pequeño de todos 35 megas)

Lo hice con la clase txt
oTxtfil := TTxtFile():New( MfILE )

lo hacía pero demoraba como 15 a 20 minutos, por eso lo deseche, hice otros intento pero con los mismos resultados
Ahora estoy probando con append from lo intente pero me da error
Error description: Error DBCMD/1005 Error de argumento: __DBAPP

Stack Calls
===========
Called from: => __DBAPP( 0 )
Called from: ../../../dbdelim.prg => __DBDELIM( 0 )
Called from: origen.prg => LEO( 717 )



El programa es así

Code: Select all  Expand view

 function leo()
 
      LOCAL aStru := { { "field1"     , "C",  8, 0 }, ;
                       { "field2"     , "C",  8, 0 }, ;
                       { "field3"     , "C", 8, 0 }, ;
                       { "field4"     , "C",  11, 0 }, ;
                       { "field5"     , "C",  1, 0 }, ;
                       { "field6"     , "C",  1, 0 }, ;
                       { "field7"     , "C",  1, 0 }, ;
                       { "field8"     , "C",  5, 0 }, ;
                       { "field9"     , "C",  5, 0 }, ;
                       { "field10"     , "C",  2, 0 }, ;
                       { "field11"     , "C",  2, 0 }, ;
                       { "field12", "C", 35, 0 } }
   
   
     LOCAL cFileTXT := "padron.txt"
     LOCAL cFileDBF := "AgenRet.dbf"

      dbCreate( cFileDBF, aStru )
     USE ( cFileDBF )
 
 
cDefEol := SET( _SET_EOL, chr( 13 ) )
APPEND FROM ( cFileTXT ) DELIMITED WITH ";"
APPEND FROM ( cFileTXT ) DELIMITED WITH ( { ",",";" } )
SET( _SET_EOL, cDefEol )

        return nil


Buscando por internet encontre la última parte de código pero me da el error descripto.

Gracias por su atención
surGom
 
Posts: 639
Joined: Wed Oct 19, 2005 12:03 pm

Re: copiar un archivo txt a dbf

Postby George » Mon Jun 23, 2014 10:54 am

Code: Select all  Expand view
APPEND FROM cFileCSV DELIMITED WITH (,)

Regards,

George
George
 
Posts: 724
Joined: Tue Oct 18, 2005 6:49 pm


Return to FiveWin for Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 88 guests