Consulta Sobre Pasar Dbf a Mysql

Consulta Sobre Pasar Dbf a Mysql

Postby remtec » Thu Jan 28, 2021 1:23 pm

Hola Amigos, muy buen día.

Tengo una solicitud de pasar periódicamente una DBF de 1.100.000 registros, a una tabla MySQL, donde realizaran algunas estadísticas externas.

Necesito como pasar esta DBF, con la complicación que existe una campo en la DBF que en la Tabla MySQL cambia de nombre, pero debe tener el mismo dato.

Estructura DBF.
Folio N 10
Fecha D
Cod_Pro C 5 ** Este Campo Cambia de Nombre en tabla MySQL
Nom_Pro C 40
...
...
...

Tabla Tabla MySQL
Folio N
Fecha D
Med_Tra ** Este Campo debe contener el mismo dato de Cod_Pro.
Nom_Pro


Existe alguna forma de realiza este proceso desde FWH 17.09, con algun codigo Prg. y generar una ejecutar un exe cuando se requiera.

Muchos Saludos

Antonio
FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 719
Joined: Fri May 12, 2017 2:50 pm

Re: Consulta Sobre Pasar Dbf a Mysql

Postby cmsoft » Thu Jan 28, 2021 2:20 pm

Podes hacer el insert en la base de datos, recorriendo la dbf y cada n registros (por ejemplo 10000) grabas en la base
Code: Select all  Expand view  RUN

TRY
      CONNECT oServer HOST cServer ;
                      USER cUser ;
                      PASSWORD cPassword ;
                      PORT nPort ;
                      FLAGS nFlags;
                      DATABASE cDBName
                               
   CATCH oErr
     RETURN NIL
END
USE folios ALIAS "folios" SHARED NEW
text = "insert into mitabla (folio,  fecha, Med_Tra, Nom_pro) VALUES "
i = 0
TRY
    oServer:BeginTransaction()
    oServer:Execute("SET SESSION wait_timeout = 186400") // Pones una duracion de sesion larga
    oServer:Execute("TRUNCATE mitabla") // Esto unicamente si cada vez que la tenes que llenar, primero la tenes que vaciar
    do while !folios->(eof())
        text = text + " (" + clipvalue2sql(folios->folio) + ","+;
                             clipvalue2sql(folios->fecha) + "," +;
                             clipvalue2sql(folios->Cod_Pro) + "," +;
                             clipvalue2sql(folios->Nom_Pro) +;
                             +"),"
        folios->(dbskip())
        i++
        IF i > 10000
           i := 0
           text = LEFT(text,LEN(text) - 1)
           oServer:Execute(text)
           text = "insert into mitabla (folio,  fecha, Med_Tra, Nom_pro) VALUES "
        ENDIF      
    enddo
    IF i > 0
       text = LEFT(text,LEN(text) - 1)
       oServer:Execute(text)
    ENDIF
    oServer:CommitTransaction()
    oServer:Execute("SET SESSION wait_timeout = 28800") // Volves a poner corta
CATCH oErr
    MsgStop("Error MySql"+CHR(10)+oErr:description,"Error")
    RETURN NIL 
END TRY    
 

Espero te sirva
User avatar
cmsoft
 
Posts: 1293
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Consulta Sobre Pasar Dbf a Mysql

Postby remtec » Thu Jan 28, 2021 3:55 pm

Hola Cesar.

Muchas gracias por tu ayuda, siempre presente cuando requiero de ella, te lo agradezco de corazón.

Realizare las pruebas este fin de semana.

Muchas gracias y que estés muy bien.

Saludos

Antonio
FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 719
Joined: Fri May 12, 2017 2:50 pm

Re: Consulta Sobre Pasar Dbf a Mysql

Postby Armando » Thu Jan 28, 2021 4:50 pm

Antonio:

Como te puedes dar cuenta, las DBF y Tablas pueden convivir perfectamente.

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3231
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Consulta Sobre Pasar Dbf a Mysql

Postby remtec » Thu Jan 28, 2021 5:06 pm

Hola Armando como estas.

Si, ayer me contacto un cliente que por lo menos tenia 25 años sin saber de el, en aquellos años le desarrolle un Sistema pero Clipper 5.2 DOS, ni pensar en ambiente windows, para mi sorpresa, aun lo usan y con un almacenamiento de 1.000.000 de registros. Es una grata sorpresa, pero un gerente necesita poder trabajar esa información externamente y por eso la consulta.

Muchos Saludos.

Antonio
FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 719
Joined: Fri May 12, 2017 2:50 pm

Re: Consulta Sobre Pasar Dbf a Mysql

Postby Armando » Thu Jan 28, 2021 5:21 pm

Antonio:

Otro comentario, para trabajar con tablas, ya sean MySQL, MariaDB o SQL,
no necesitas librerías externas, ojo, NO DIGO QUE SEAN MALAS o que no sirvan,
simplemente digo que no las necesitas, con ADO + las mejoras a muchos
comandos que Mr. Rao ha hecho (Estupendo trabajo) tienes suficiente.

Lo único que debes cambiar es tu chip para no querer trabajar tablas al
estilo de las DBFs.

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3231
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Consulta Sobre Pasar Dbf a Mysql

Postby remtec » Thu Jan 28, 2021 10:21 pm

Armando:

Muy agradecido por ayuda, entiendo todo lo que me has comentado y mucho mas con la información que me enviaste.

En este caso particular, no son mas de 8 campos de una Dbf que contiene varios mas, que incluso revisando entre mis cosas, ni siquiera tengo los PRG del sistema de clipper, que es una versión muy antigua, por lo que lo único que podría hacer es crear unas pocas líneas de código en FWH con un parámetro de fecha para seleccionar y eso es todo, que lo ejecuten cuando lo necesiten, algo esta pasando en las gerencias que están reuniendo manipular datos en busca de información que les ayude a gestionar.

La verdad que me deja muy sorprendido que al dia de hoy, aun este en plena vigencia, un sistema desarrolla completamente en clipper y 16 bits.

Bueno amigo, creo que yo aun estoy muy lejos de la actualidad de uds, años luz, espero pronto como te comente dar el salto a MySQL, SQL, en un proyecto grade, solo deseo que sea luego.

Muchos Saludos.

Antonio
FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 719
Joined: Fri May 12, 2017 2:50 pm

Re: Consulta Sobre Pasar Dbf a Mysql

Postby Armando » Thu Jan 28, 2021 11:19 pm

Antonio:

Sin pretender meterme en tus negocios, pienso que tu cliente está
en un riesgo alto, los PCs a 16 bits prácticamente están extintos
así que el día que, por necesidad, deban cambiar a PCs de 32 o 64
bits tu excelente sistema dejará de funcionar.

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3231
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Consulta Sobre Pasar Dbf a Mysql

Postby remtec » Fri Jan 29, 2021 1:18 am

Armando

Totalmente de acuerdo en lo que opinas, por eso me sorprende que aun este operativo este sistema, no he visto hoy en que maquinas los están corriendo, solo se que hasta pc con Windows xp 32 bits, tendría que funcionar sin problemas. Pensar proponer una actualización, tendría que evaluarlo mucho, por mi parte ya no desarrollo ese tipo de temas, hoy desarrollo en el área de la Salud, ya hace muchos años. Esto es solo responder a pasar los datos a una Tabla que me la han solicitado así.

Muchos Saludos

Antonio
FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 719
Joined: Fri May 12, 2017 2:50 pm

Re: Consulta Sobre Pasar Dbf a Mysql

Postby nageswaragunupudi » Mon Feb 01, 2021 4:38 am

remtec wrote:Hola Amigos, muy buen día.

Tengo una solicitud de pasar periódicamente una DBF de 1.100.000 registros, a una tabla MySQL, donde realizaran algunas estadísticas externas.

Necesito como pasar esta DBF, con la complicación que existe una campo en la DBF que en la Tabla MySQL cambia de nombre, pero debe tener el mismo dato.

Estructura DBF.
Folio N 10
Fecha D
Cod_Pro C 5 ** Este Campo Cambia de Nombre en tabla MySQL
Nom_Pro C 40
...
...
...

Tabla Tabla MySQL
Folio N
Fecha D
Med_Tra ** Este Campo debe contener el mismo dato de Cod_Pro.
Nom_Pro


Existe alguna forma de realiza este proceso desde FWH 17.09, con algun codigo Prg. y generar una ejecutar un exe cuando se requiera.

Muchos Saludos

Antonio


It is very easy using built-in MySql library of FWH 17.09, using this function without writing any code.

Code: Select all  Expand view  RUN

USE MYDBF
oCn:UploadFromAlias( "mysqltable", "FOLIO,DATA,CODE_PRO,NOM_PRO", "folio,date,med_tra,nom_pro" )
 


Not only different field names, we can also use expressions in the dbf field list.
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10662
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Consulta Sobre Pasar Dbf a Mysql

Postby nageswaragunupudi » Mon Feb 01, 2021 4:51 am

This is a small exmaple.
You can copy to fwh\samples folder, build with buildh or buildx and test.
Please provide your mysql server credentials, password, etc.
Code: Select all  Expand view  RUN

#include "fivewin.ch"

function TestUploadFromAlias()

   local oCn, oRs, nBatchSize := 500

   FWCONNECT oCn HOST "localhost" USER "root" PASSWORD "yourpassword" DATABASE "yourdb"
   ? "connected"

   oCn:DropTable( "dbf2sql" )
   oCn:CreateTable( "dbf2sql", { { "custname", "C", 30, 0 }, { "address", "C", 30, 0 } } )
   ? "table created"
   USE CUSTOMER NEW
   ? "start upload"
   oCn:UploadFromAlias( "dbf2sql", "TRIM(FIRST-','-LAST),STREET", "custname,address", nBatchSize )
   ? "uploaded"

   oRs   := oCn:dbf2sql
   XBROWSER oRs
   oRs:Close()
   oCn:Close()

return nil
 


Image
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10662
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Consulta Sobre Pasar Dbf a Mysql

Postby remtec » Tue Feb 02, 2021 4:32 pm

Mr. Rao.

Muy buen dia.

Deseando que te encuentres muy bien.

Como siempre mil gracias por tu ayuda y tiempo dedicado, estos nos ayuda a crecer.

Ya he probado y funciona muy bien, ahora a preparar el programa para hacer las ultimas pruebas y entregar.

Muchas gracias.

Antonio.
FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 719
Joined: Fri May 12, 2017 2:50 pm

Re: Consulta Sobre Pasar Dbf a Mysql

Postby TecniSoftware » Tue Feb 02, 2021 11:44 pm

Mr Rao

Es posible utilizar un Meter en este ejemplo para visualizar el progreso?

Muchas gracias


nageswaragunupudi wrote:This is a small exmaple.
You can copy to fwh\samples folder, build with buildh or buildx and test.
Please provide your mysql server credentials, password, etc.
Code: Select all  Expand view  RUN

#include "fivewin.ch"

function TestUploadFromAlias()

   local oCn, oRs, nBatchSize := 500

   FWCONNECT oCn HOST "localhost" USER "root" PASSWORD "yourpassword" DATABASE "yourdb"
   ? "connected"

   oCn:DropTable( "dbf2sql" )
   oCn:CreateTable( "dbf2sql", { { "custname", "C", 30, 0 }, { "address", "C", 30, 0 } } )
   ? "table created"
   USE CUSTOMER NEW
   ? "start upload"
   oCn:UploadFromAlias( "dbf2sql", "TRIM(FIRST-','-LAST),STREET", "custname,address", nBatchSize )
   ? "uploaded"

   oRs   := oCn:dbf2sql
   XBROWSER oRs
   oRs:Close()
   oCn:Close()

return nil
 


Image
Alejandro Cebolido
Buenos Aires, Argentina
User avatar
TecniSoftware
 
Posts: 235
Joined: Fri Oct 28, 2005 6:29 pm
Location: Quilmes, Buenos Aires, Argentina

Re: Consulta Sobre Pasar Dbf a Mysql

Postby nageswaragunupudi » Wed Feb 03, 2021 4:20 am

1. Setup your meter
2. oCn:bMeter := { |nProgress,nTotal| <your_meter_update_function>( nProgress,nTotal ) }
3. oCn:UploadFromAlias(...)
4. oCn:bMeter := nil

But we advise you not to display meter, except for very huge tables, because the display of meter reduces the speed a lot.
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10662
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Consulta Sobre Pasar Dbf a Mysql

Postby TecniSoftware » Wed Feb 03, 2021 12:52 pm

nageswaragunupudi wrote:1. Setup your meter
2. oCn:bMeter := { |nProgress,nTotal| <your_meter_update_function>( nProgress,nTotal ) }
3. oCn:UploadFromAlias(...)
4. oCn:bMeter := nil

But we advise you not to display meter, except for very huge tables, because the display of meter reduces the speed a lot.


Thank you!
Geetings
Alejandro Cebolido
Buenos Aires, Argentina
User avatar
TecniSoftware
 
Posts: 235
Joined: Fri Oct 28, 2005 6:29 pm
Location: Quilmes, Buenos Aires, Argentina


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Adolfo, gmart1, Google [Bot] and 76 guests