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
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
USE MYDBF
oCn:UploadFromAlias( "mysqltable", "FOLIO,DATA,CODE_PRO,NOM_PRO", "folio,date,med_tra,nom_pro" )
#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
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
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.
Return to FiveWin para Harbour/xHarbour
Users browsing this forum: Adolfo, gmart1, Google [Bot] and 76 guests