intento importar desde un reporte que recibo en CSV y no logro hacerlo
seguramente sea simple, pero no lo he logrado
intente con memoread, pero no funciona al tener distintos largos la lineas
intente APPEND FROM "source.csv" DELIMITED WITH ( { '"', ";" } ) y tampoco
agradezco a quien pueda hecharme una mano
este es el CSV que recibo
FECHA DE OPERACIÓN FECHA DE PRESENTACIÓN FECHA DE PAGO N° DE CUPÓN N° DE COMERCIO N° TARJETA MONEDA TOTAL BRUTO TOTAL DESCUENTO TOTAL NETO ENTIDAD PAGADORA CUENTA BANCARIA N° LIQUIDACIÓN TIPO DE LIQUIDACIÓN ESTADO CUOTAS N° DE AUTORIZACIÓN TARJETA
09/10/2019 09/10/2019 11/10/2019 52 23643331 " 5016" ARS 1.770,00 17,7 1.752,30 BANCO SANTANDER 3691926 133011 Liquidado 0 740370 VISA DEBIT
08/10/2019 08/10/2019 10/10/2019 16 23643331 " 9009" ARS 1.800,00 18 1.782,00 BANCO SANTANDER 3691926 132917 Liquidado 0 593656 VISA DEBIT
08/10/2019 08/10/2019 10/10/2019 15 23643331 " 9009" ARS 2.260,00 22,6 2.237,40 BANCO SANTANDER 3691926 132917 Liquidado 0 593088 VISA DEBIT
07/10/2019 08/10/2019 10/10/2019 14 23643331 " 0029" ARS 3.000,00 30 2.970,00 BANCO SANTANDER 3691926 132917 Liquidado 0 164768 VISA DEBIT
07/10/2019 08/10/2019 10/10/2019 51 23643331 " 4020" ARS 3.750,00 37,5 3.712,50 BANCO SANTANDER 3691926 132917 Liquidado 0 528856 VISA DEBIT
07/10/2019 08/10/2019 10/10/2019 50 23643331 " 4020" ARS 1.080,00 10,8 1.069,20 BANCO SANTANDER 3691926 132917 Liquidado 0 528587 VISA DEBIT
Importar a DBF desde CSV
-
- Posts: 128
- Joined: Tue Jul 15, 2008 7:12 pm
- Location: Argentina
-
- Posts: 105
- Joined: Thu Mar 16, 2017 4:08 pm
- Location: Ecuador
Re: Importar a DBF desde CSV
Estimado:
Pruebe así, además revise la documentación de APPEND FROM:
cFileCSV="Copa-América.csv"
APPEND FROM &RUTTMP.&cFileCSV DELIMITED WITH PIPE // Chr(9)
Saludos
Fernando Espinoza A.
Pruebe así, además revise la documentación de APPEND FROM:
cFileCSV="Copa-América.csv"
APPEND FROM &RUTTMP.&cFileCSV DELIMITED WITH PIPE // Chr(9)
Saludos
Fernando Espinoza A.
Re: Importar a DBF desde CSV
Hola postinelli.
Cierto que no realiza la importacion correctamente,
la unica manera que he conseguido que la realice es asi.
Primero se formatea el .csv con macros, o reemplazar , yo utilizo notepad++
y dejarlo delimitado con blancos, para ellos se une BANCOSANTANDER y TARJETADEBIT
Y _ que recogen los datos que sean todos texto.
Mira el codigo.
Asi lo hace bien, pero tenemos que convertir los 3 _ a fecha y los totaldesc , etc a numericos con 2 decimales
lo puedes formatear y pasarlo a otra database ya con campos correctos, no lo
he probado pero supongo que no habra problema.
En fin no he podido conseguir mas.
Saludos.
Jose.
Cierto que no realiza la importacion correctamente,
la unica manera que he conseguido que la realice es asi.
Primero se formatea el .csv con macros, o reemplazar , yo utilizo notepad++
y dejarlo delimitado con blancos, para ellos se une BANCOSANTANDER y TARJETADEBIT
Y _ que recogen los datos que sean todos texto.
Mira el codigo.
Code: Select all
FUNCTION Main()
SET DATE TO FRENCH
IF !file("Operacio.dbf" )
dbCreate( "Operacio.dbf", { { "fechope","C", 8, 0 }, ;
{ "fechprese","C", 8, 0 }, ;
{ "fechpago","C", 8, 0 }, ;
{ "numcup", "C", 2, 0 }, ;
{ "numcomer","C", 8, 0 }, ;
{ "numtarj","C", 4, 0 }, ;
{ "moneda","C", 3, 0 }, ;
{ "totalbrut","C", 12, 0 }, ;
{ "totaldesc","C", 12, 0 }, ;
{ "totalnet","C", 12, 0 }, ;
{ "entpag","C", 25, 0 }, ;
{ "ctabanc","C", 7, 0 }, ;
{ "numliq","C", 6, 0 }, ;
{ "tipoliq","C", 15, 0 }, ;
{ "estcuotas","C", 1, 0 }, ;
{ "numaut","C", 6, 0 }, ;
{ "tarjeta","C", 15, 0 } } )
ENDIF
USE Operacio ALIAS "Ope" NEW
APPEND FROM operacio.csv DELIMITED WITH BLANK
XBROWSER "Ope" TITLE "Listado operaciones con tarjeta" COLUMNS "fechope" ,"Numcup", "totalbrut","tarjeta", "estcuotas"
Return Nil
lo puedes formatear y pasarlo a otra database ya con campos correctos, no lo
he probado pero supongo que no habra problema.
En fin no he podido conseguir mas.
Saludos.
Jose.
Fwh 19.06 32 bits + Harbour 3.2dev(r2011030937)+ Borland 7.4 + FivEdit
Re: Importar a DBF desde CSV
Hola amigo:
Comprobado que convierte bien, mira el fichero yo lo dejo asi de la manera que te explique
con el Notepad++, cuesta muy poco. Reemplazar o macros
guardalo con "operacio.csv"
Luego le aplico este codigo.
si no encuentas nada mejor .....
Saludos
Jose.
Comprobado que convierte bien, mira el fichero yo lo dejo asi de la manera que te explique
con el Notepad++, cuesta muy poco. Reemplazar o macros
Code: Select all
09/10/2019 09/10/2019 11/10/2019 52 23643331 5016 ARS 1770.00 17.7 1752.30 BANCOSANTANDER 3691926 133011 Liquidado 0 740370 VISADEBIT
08/10/2019 08/10/2019 10/10/2019 16 23643331 9009 ARS 1800.00 18 1782.00 BANCOSANTANDER 3691926 132917 Liquidado 0 593656 VISADEBIT
08/10/2019 08/10/2019 10/10/2019 15 23643331 9009 ARS 2260.00 22.6 2237.40 BANCOSANTANDER 3691926 132917 Liquidado 0 593088 VISADEBIT
07/10/2019 08/10/2019 10/10/2019 14 23643331 0029 ARS 3000.00 30 2970.00 BANCOSANTANDER 3691926 132917 Liquidado 0 164768 VISADEBIT
07/10/2019 08/10/2019 10/10/2019 51 23643331 4020 ARS 3750.00 37.5 3712.50 BANCOSANTANDER 3691926 132917 Liquidado 0 528856 VISADEBIT
07/10/2019 08/10/2019 10/10/2019 50 23643331 4020 ARS 1080.00 10.8 1069.20 BANCOSANTANDER 3691926 132917 Liquidado 0 528587 VISADEBIT
Luego le aplico este codigo.
Code: Select all
#include "fivewin.ch"
FUNCTION Main()
LOCAL dFechope:= CTOD(""),dFechprese:=CTOD(""),dFechpago:=CTOD(""),cNumcup:= Space(2),cNumcomer:=Space(8), ;
cNumtarj:= Space(4),cMoneda:=Space(3),nTotalbrut:=0,nTotaldesc:=0,nTotalnet:=0,cEntpag:=Space(25), ;
cCtabanc:=Space(7),cNumliq:=Space(6),cTipoLiq:=Space(15),cEstcuotas:=Space(1),cNumaut:=Space(6),cTarjeta:=Space(15)
SET DATE TO FRENCH
SET DECIMALS TO 2
SET FIXED ON
IF !file("Operacio.dbf" )
dbCreate( "Operacio.dbf", { { "fechope","C", 8, 0 }, ;
{ "fechprese","C", 8, 0 }, ;
{ "fechpago","C", 8, 0 }, ;
{ "numcup", "C", 2, 0 }, ;
{ "numcomer","C", 8, 0 }, ;
{ "numtarj","C", 4, 0 }, ;
{ "moneda","C", 3, 0 }, ;
{ "totalbrut","C", 12, 0 }, ;
{ "totaldesc","C", 12, 0 }, ;
{ "totalnet","C", 12, 0 }, ;
{ "entpag","C", 25, 0 }, ;
{ "ctabanc","C", 7, 0 }, ;
{ "numliq","C", 6, 0 }, ;
{ "tipoliq","C", 15, 0 }, ;
{ "estcuotas","C", 1, 0 }, ;
{ "numaut","C", 6, 0 }, ;
{ "tarjeta","C", 15, 0 } } )
ENDIF
IF !file("Operacio2.dbf" )
dbCreate( "Operacio2.dbf", { { "fechope","D", 8, 0 }, ;
{ "fechprese","D", 8, 0 }, ;
{ "fechpago","D", 8, 0 }, ;
{ "numcup", "C", 2, 0 }, ;
{ "numcomer","C", 8, 0 }, ;
{ "numtarj","C", 4, 0 }, ;
{ "moneda","C", 3, 0 }, ;
{ "totalbrut","N", 12, 2 }, ;
{ "totaldesc","N", 12, 2 }, ;
{ "totalnet","N", 12, 2 }, ;
{ "entpag","C", 25, 0 }, ;
{ "ctabanc","C", 7, 0 }, ;
{ "numliq","C", 6, 0 }, ;
{ "tipoliq","C", 15, 0 }, ;
{ "estcuotas","C", 1, 0 }, ;
{ "numaut","C", 6, 0 }, ;
{ "tarjeta","C", 15, 0 } } )
ENDIF
USE Operacio ALIAS "Ope" NEW
APPEND FROM operacio.csv DELIMITED WITH BLANK
USE Operacio2 ALIAS "Ope2" NEW
Ope->(DbGotop())
WHILE !Ope->(EOF())
Ope2->(DBAppend())
dFechope := CTOD(Ope->fechope)
Ope2->fechope := dFechope
dFechprese := CTOD(Ope->fechprese)
Ope2->fechprese := dFechprese
dFechpago := CTOD(Ope->fechpago)
Ope2->fechpago := dFechpago
cNumcup := Ope->numcup
Ope2->numcup := cNumcup
cNumcomer := Ope->numcomer
Ope2->numcomer := cNumcomer
cNumtarj := Ope->numtarj
Ope2->numtarj := cNumtarj
cMoneda := Ope->moneda
Ope2->moneda := cMoneda
nTotalbrut := Val(Ope->totalbrut)
Ope2->totalbrut := nTotalBrut
nTotaldesc := Val(Ope->totaldesc)
Ope2->totaldesc := nTotaldesc
nTotalnet := Val(Ope->totalnet)
Ope2->totalnet := nTotalnet
cEntpag := SubStr(Ope->Entpag,1,5) + " " + SubStr(Ope->entpag,6)
Ope2->entpag := cEntpag
cCtabanc := Ope->ctabanc
Ope2->ctabanc := cCtabanc
cNumliq := Ope->numliq
Ope2->numliq := cNumliq
cTipoliq := Ope->tipoliq
Ope2->tipoliq := cTipoliq
cEstcuotas := Ope->estcuotas
Ope2->estcuotas := cEstCuotas
cNumaut := Ope->numaut
Ope2->numaut := cNumaut
cTarjeta := SubStr(Ope->tarjeta,1,4) + " " + SubStr(Ope->tarjeta,5)
Ope2->tarjeta := cTarjeta
Ope->( dbskip() )
END
DbCloseAll()
FERASE("Operacio.dbf")
FRENAME("operacio2.dbf","operacio.dbf")
USE Operacio ALIAS "Ope" NEW
XBROWSER "Ope" TITLE "Listado operaciones con tarjeta" COLUMNS "fechope" ,"Numcup", "totalbrut", "totalnet","tarjeta", "estcuotas"
Return Nil
Saludos
Jose.
Fwh 19.06 32 bits + Harbour 3.2dev(r2011030937)+ Borland 7.4 + FivEdit
-
- Posts: 128
- Joined: Tue Jul 15, 2008 7:12 pm
- Location: Argentina
Re: Importar a DBF desde CSV
Gracias José
-
- Posts: 128
- Joined: Tue Jul 15, 2008 7:12 pm
- Location: Argentina
Re: Importar a DBF desde CSV
asi logré hacerlo
Code: Select all
function Main()
Local cBuf
Local aData, aHeaders
Local nbrut:=0
set date french
set epoch to 1950
set century on
cBuf := MemoRead( 'posnet.csv' )
// parse and make a multi dimentional array
if Right( cBuf, 2 ) != CRLF
// pad with CRLF if needed, not to miss the last line
cBuf += CRLF
endif
cBuf := StrTran( cBuf, CRLF, Chr( 10 ) )
aData := hb_aTokens( cBuf, Chr(10) )
AEval( aData, { |c,i| aData[ i ] := hb_aTokens( c, ';' ) } )
aHeaders := aData[ 1 ]
aData := ADel( aData, 1 )
aSize( aData, Len( aData ) - 1 )
// Parsing is done
// Extending the program to Write DBF
WriteToDBF( 'posnet.DBF', aData, aHeaders )
// Check the DBF
USE posnet
XBrowse()
-----------------------------------------
static function WriteToDBF( cDbf, aData, aHeaders )
local aStruct := {}
local n, nLen := Len( aData )
USE ( cDbf ) NEW ALIAS OUT EXCLUSIVE
zap
for n := 1 to nLen
OUT->( dbAppend() )
AEval( aData[ n ], { |c,i| OUT->( FieldPut( i, c ) ) } )
next
OUT->( dbCloseArea() )
return nil
*/