Carga do DBF para MySql/Postgres e LetoDbf juntos!
Enviado: 07 Mar 2025 09:35
Olá!
Fiz aqui, uns testes... pegando o macete VALUES (), (), () tava colocando VALUES (), VALUES ()...
Pego de 10 em 10 registros, por vez.
Ai tem o campo id autoincrement, talvez desligue pq não usei assim no DBF.
O campo data que criei NOT NULL, aceita criar mas em compensação não grava nada kkkkk, Não aceita NULL quando a data é 0000-00-00.
Rodando leve os dois.
Quem tem seus DBFs e quer colocar na NUVEM e migrar/ usar junto com SQL.
Colocando aqui no forum como marcação de aprendizado pra mim mesmo.
Saudações,
Itamar M. Lins Jr.
Fiz aqui, uns testes... pegando o macete VALUES (), (), () tava colocando VALUES (), VALUES ()...
Pego de 10 em 10 registros, por vez.
Ai tem o campo id autoincrement, talvez desligue pq não usei assim no DBF.
O campo data que criei NOT NULL, aceita criar mas em compensação não grava nada kkkkk, Não aceita NULL quando a data é 0000-00-00.
Código: Selecionar todos
AbreDb('colaboradores.dbf','co',.t.)
co->(dbGoTop())
nCampos := co->(FCount())
cFields := ''
aValues := {}
FOR nCount := 1 TO nCampos
IF Lower(Field(nCount)) = 'idcolabora'
ELSE
cFields += co->(Field(nCount)) + iif(nCount==nCampos,'',",")
ENDIF
NEXT
cDados := "" ; cSql := "" ; nReg := 0 ; lUma := .T.
DO WHILE co->(!Eof())
FOR nCount:=1 TO nCampos
xField := co->(FieldGet(nCount))
DO CASE
CASE ValType(xField) = 'C'
xValue := "'"+AllTrim(xField)+"'"
CASE ValType(xField) = 'N'
IF Lower(Field(nCount)) = 'idcolabora'
loop
ELSE
xValue := "'"+hb_ntoc(xField)+"'"
ENDIF
CASE ValType(xField) = 'D'
IF Empty(xField)
xValue := 'NULL'
ELSE
xValue := "'"+hb_DToC(xField,'YYYY-MM-DD')+"'"
ENDIF
ENDCASE
cDados += xValue + iif(nCount==nCampos,'',",")
NEXT
co->(dbSkip())
IF ++nReg <= 10
cSQL += iif(lUma,"values ",", ") + "(" + cDados + ")" + iif(co->(Eof()),";","")
cDados := "" ; lUma := .F.
ENDIF
IF co->(Eof()) .OR. nReg == 10
cSQLFinal := "INSERT INTO colaboradores (" + cFields + ") " + cSQL
IF rddInfo( RDDI_EXECUTE, cSQLFinal )
Hwg_MsgInfo("Dados adicionados.")
ELSE
Hwg_MsgInfo("Falha adicionando dados.")
ENDIF
nReg := 0
ENDIF
ENDDO
Quem tem seus DBFs e quer colocar na NUVEM e migrar/ usar junto com SQL.
Colocando aqui no forum como marcação de aprendizado pra mim mesmo.
Saudações,
Itamar M. Lins Jr.