MariaDB
Moderador: Moderadores
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
MariaDB
Iniciar testes com MariaDB.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
MariaDB
Parece mais prático que MySQL.
Só não deixou acrescentar usuário na instalação, mas dá pra fazer manual.
Só não deixou acrescentar usuário na instalação, mas dá pra fazer manual.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
MariaDB
Esta parte nem faz diferença.
Só o tempo restante que parece doido, mas tudo bem.
Pronto.
O que era MySQL agora é MariaDB.
Agora vou começar os testes do aplicativo.
Nota:
Usei meu backup feito pelo HARBOUR pra MySQL, já é um bom começo.
Só o tempo restante que parece doido, mas tudo bem.
Pronto.
O que era MySQL agora é MariaDB.
Agora vou começar os testes do aplicativo.
Nota:
Usei meu backup feito pelo HARBOUR pra MySQL, já é um bom começo.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
MariaDB
Só alterei o nome do servidor, nem precisei mexer em mais nada.
Como é o primeiro uso do dia, tá fazendo backup do MariaDB, apesar de mostrar MySQL.
Ou seja, já está fazendo uso do MariaDB.
Como é o primeiro uso do dia, tá fazendo backup do MariaDB, apesar de mostrar MySQL.
Ou seja, já está fazendo uso do MariaDB.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
MariaDB
Sei lá....
Era instantâneo, continua instantâneo...
Não vou medir diferença de milésimos de segundo, porque não me importa.
Agora é só trocar no servidor.
Pois é... esse mundo xbase é complicado....
Tem mais gente pra atrapalhar do que pra ajudar.
Tanta discussão sobre licença de MySQL....
E em alguns minutos ficou tudo resolvido !!!!
O que alterei no meu aplicativo? como instalei pra teste em outra máquina, alterei o nome do servidor.
Será que está usando mesmo o servidor Mariadb?
Acabei errando a senha de instalação, e o aplicativo nem acessava até corrigir a senha NO MARIADB.
Se fosse o servidor MySQL.... a senha já estava lá.
Pois é... foi tão transparente a troca, que até deixou na dúvida se era outro servidor mesmo kkkkk
Era instantâneo, continua instantâneo...
Não vou medir diferença de milésimos de segundo, porque não me importa.
Agora é só trocar no servidor.
Pois é... esse mundo xbase é complicado....
Tem mais gente pra atrapalhar do que pra ajudar.
Tanta discussão sobre licença de MySQL....
E em alguns minutos ficou tudo resolvido !!!!
O que alterei no meu aplicativo? como instalei pra teste em outra máquina, alterei o nome do servidor.
Será que está usando mesmo o servidor Mariadb?
Acabei errando a senha de instalação, e o aplicativo nem acessava até corrigir a senha NO MARIADB.
Se fosse o servidor MySQL.... a senha já estava lá.
Pois é... foi tão transparente a troca, que até deixou na dúvida se era outro servidor mesmo kkkkk
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
MariaDB
Comparação da instalação:
No MySQL:
- Acrescento um usuário adicional durante a instalação
- Depois como administrador do Windows localizo e altero o MY.INI pra mexer no buffer pool size
- Depois instalo o HeidiSQL
No MariaDB:
- Instalo no default - dá pra alterar buffer pool size na própria instalação mas o default foi suficiente
- Ele instala o HeidiSQL e por ele adiciono um usuário
Falta testar usando o ODBC do MariaDB ao invés do ODBC MySQL.
Isso elimina de vez qualquer software da Oracle.
No meu caso, que é ADO, vai ser só trocar o texto que vai em connectionstring := "MySQL" pelo equivalente do MariaDB.
Lógico... agora é fazer o mesmo em cada cliente...
Parece até estranho, tudo resolvido em alguns minutos.
Pela discussão sobre MySQL, parecia que não seria tão simples.
No MySQL:
- Acrescento um usuário adicional durante a instalação
- Depois como administrador do Windows localizo e altero o MY.INI pra mexer no buffer pool size
- Depois instalo o HeidiSQL
No MariaDB:
- Instalo no default - dá pra alterar buffer pool size na própria instalação mas o default foi suficiente
- Ele instala o HeidiSQL e por ele adiciono um usuário
Falta testar usando o ODBC do MariaDB ao invés do ODBC MySQL.
Isso elimina de vez qualquer software da Oracle.
No meu caso, que é ADO, vai ser só trocar o texto que vai em connectionstring := "MySQL" pelo equivalente do MariaDB.
Lógico... agora é fazer o mesmo em cada cliente...
Parece até estranho, tudo resolvido em alguns minutos.
Pela discussão sobre MySQL, parecia que não seria tão simples.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
MariaDB
Como eu disse antes, o MySQL ou MariaDB ficam em execução no servidor.
Por isso, no terminal não se vê nada de diferente, nem dá pra saber de onde vém as informações.
Olhei de novo pra confirmar...
O processo aparece na lista do servidor MariaDB.
Só assim mesmo, pra ter certeza de qual servidor está sendo acessado.
Por isso, no terminal não se vê nada de diferente, nem dá pra saber de onde vém as informações.
Olhei de novo pra confirmar...
O processo aparece na lista do servidor MariaDB.
Só assim mesmo, pra ter certeza de qual servidor está sendo acessado.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
MariaDB
O mesmo acontece com o ODBC:
Texto usando ODBC MySQL: {MySQL ODBC 5.3 Driver}
Texto usando ODBC MariaDB: {MariaDB ODBC 3.1 Driver}
Desinstalei todos os conectores MySQL pra fazer o teste.
Tanto faz, ODBC MariaDB acessa MySQL e vice-versa.
Se o seu aplicativo usa ODBC MySQL ou MariaDB, tanto faz.
Se o servidor é MySQL ou MariaDB, tanto faz.
Pode trocar o servidor primeiro e o conector depois, ou o contrário, ou tudo de uma vez, tanto faz.
Se usar daquelas LIBs que dependem de existir uma conexão fixa criada no Windows, com certeza vai ter que mexer nisso também.
Agora planejar como vou fazer isso nos clientes, porque não dá pra fazer automático.
Em alguns casos depende do administrador da rede.
No geral achei o MariaDB mais prático, por não depender de NET Framework ou Visual C, mas pode ser porque já estavam instalados na minha máquina. Isso não seria problema, mas não sei dizer se depende de algum deles.
Texto usando ODBC MySQL: {MySQL ODBC 5.3 Driver}
Texto usando ODBC MariaDB: {MariaDB ODBC 3.1 Driver}
Desinstalei todos os conectores MySQL pra fazer o teste.
Tanto faz, ODBC MariaDB acessa MySQL e vice-versa.
Se o seu aplicativo usa ODBC MySQL ou MariaDB, tanto faz.
Se o servidor é MySQL ou MariaDB, tanto faz.
Pode trocar o servidor primeiro e o conector depois, ou o contrário, ou tudo de uma vez, tanto faz.
Se usar daquelas LIBs que dependem de existir uma conexão fixa criada no Windows, com certeza vai ter que mexer nisso também.
Agora planejar como vou fazer isso nos clientes, porque não dá pra fazer automático.
Em alguns casos depende do administrador da rede.
No geral achei o MariaDB mais prático, por não depender de NET Framework ou Visual C, mas pode ser porque já estavam instalados na minha máquina. Isso não seria problema, mas não sei dizer se depende de algum deles.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
MariaDB
Não sei pq, masz esse tópico me deu vontade de fazer um teste...
Fiz o IPL em um IBM Power9 que tenho aqui e criei 2 instâncias do Ubuntu nele... Separei exatamente a mesma quantidade de memoria/cpu e disco para cada VM, quantidades dedicadas para cada VM, ou seja, sem recursos compartilhados... em uma instância instalei o Postgre e na outra o MariaDb e fiz exatamente o mesmo teste nas duas inatancias, fiz o insert de 2000000 de registros nas tabelas, com varios relacionamentos e etc... O mariadb teve um desempenho bem melhor que no postgre
Fiz o IPL em um IBM Power9 que tenho aqui e criei 2 instâncias do Ubuntu nele... Separei exatamente a mesma quantidade de memoria/cpu e disco para cada VM, quantidades dedicadas para cada VM, ou seja, sem recursos compartilhados... em uma instância instalei o Postgre e na outra o MariaDb e fiz exatamente o mesmo teste nas duas inatancias, fiz o insert de 2000000 de registros nas tabelas, com varios relacionamentos e etc... O mariadb teve um desempenho bem melhor que no postgre
MariaDB
Quintas,
Qual é a string de conexão para usar o MariaDb?
Quais suas impressões sobre esse SGBD
Qual é a string de conexão para usar o MariaDb?
Quais suas impressões sobre esse SGBD
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
MariaDB
Se usa ODBC MySQL 3.51, a string é MySQL 3.51asimoes escreveu:Qual é a string de conexão para usar o MariaDb?
Quais suas impressões sobre esse SGBD
Se usa ODBC MySQL 5.3, a string é MySQL 5.3
Se usa ODBC MariaDB 3.1, a string é MariaDB 3.1
A string tem a ver com o cliente/conector, e não com o servidor.
Vai funcionar normalmente com as LIBs do Harbour, mesmo sendo pra MySQL.
Sobre o MariaDB:
MySQL custa 2.000 dólares por ano, MariaDB é grátis.
Acho que isso já é o suficiente pra decidir a maioria dos casos.
No caso de versão MySQL paga, a comparação vai ser com muitos outros produtos pagos, e com a condição financeira do cliente.
Sinceramente....
Sem pressa de trocar de MySQL pra MariaDB, já que pode ser trocado a qualquer momento.
E como meu aplicativo usa DBF + MySQL, nem está fazendo uso de nada avançado que possa fazer diferença.
A única coisa interessante a ser feita é trocar a conexão pra MariaDB, que é grátis, e funciona tanto pra MariaDB quanto pra MySQL. Isso resolve qualquer questão sobre o aplicativo.
Quando eu fizer uma instalação nova, ou tiver que refazer alguma reinstalação, aproveito e instalo o MariaDB.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
MariaDB
Ao restaurar backups de TODOS os clientes pra fazer testes, só deu este erro.
Criei essa IndexExists() e passei a usar, mas alterei errado no fonte que faz atualização.
Vou aproveitar e fazer tudo de novo usando o conector do MariaDB.
O servidor já é MariaDB.
mas é lógico... se NÃO existir apagar.... aí não dá.... kkkErro executando comando:-2147217900 [MySQL][ODBC 5.3(a) Driver][mysqld-5.5.66-MariaDB]Can't DROP 'NOTA'; check that column/key exists
Código: Selecionar todos
IF ! :IndexExists( "JPNOTFIS", "NOTA" )
:ExecuteCmd( "ALTER TABLE JPNOTFIS DROP INDEX NOTA" )
ENDIF
Vou aproveitar e fazer tudo de novo usando o conector do MariaDB.
O servidor já é MariaDB.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
MariaDB
Quintas,
Você tem algum utilitário de migração do dbf para o MySQL ou MariaDB ?
Outra coisa o driver é somente ODBC não existe OleDb para o MariaDB ?
Você tem algum utilitário de migração do dbf para o MySQL ou MariaDB ?
Outra coisa o driver é somente ODBC não existe OleDb para o MariaDB ?
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
MariaDB
Só ODBC mesmo, acho que o de ADS é o único que tem a opção diferente.
Eu uso um fonte em Harbour.
Basicamente é escolher o tipo equivalente no MySQL.
O mais importante é criar o comando o maior possível, pra incluir muita coisa de uma vez, e não um registro por vez.
Deixei como default o máximo de 500kb
Também tem a conversão conforme codepage, mas isso vai de cada um, ou de cada base.
Segue como exemplo.
O ideal é cada um fazer seus próprios testes, porque nunca se sabe que tipos de caractere podem existir nos DBFs.
Eu uso um fonte em Harbour.
Basicamente é escolher o tipo equivalente no MySQL.
O mais importante é criar o comando o maior possível, pra incluir muita coisa de uma vez, e não um registro por vez.
Deixei como default o máximo de 500kb
Também tem a conversão conforme codepage, mas isso vai de cada um, ou de cada base.
Segue como exemplo.
Código: Selecionar todos
/*
ZE_SQLFROMDBF - Transfere de DBF pra MySQL incluindo ou não
José Quintas
*/
#include "inkey.ch"
#include "dbstruct.ch"
#define MYSQL_MAX_CMDINSERT 500000
FUNCTION SqlFromDbf()
LOCAL oFiles, nCont, acAchoice := {}, cFileDbf, nOpc := 1, cConfirma := "NAO", GetList := {}
@ 2, 1 SAY "ATENÇÃO"
@ Row() + 1, 1 SAY "Os dados dos DBFs são salvos no MySql."
@ Row() + 1, 1 SAY "Se quiser eliminar dados anteriores do MySql, precisa fazer manualmente"
@ Row() + 1, 1 SAY "Se quiser eliminar dados finais do DBF, precisa fazer manualmente"
oFiles := CnfDbfInd()
FOR nCont = 1 TO Len( oFiles )
AAdd( acAchoice, oFiles[ nCont, 1 ] )
NEXT
DO WHILE .T.
wAchoice( Row() + 1, 5, acAchoice, @nOpc, "Arquivos a transferir" )
IF LastKey() == K_ESC
EXIT
ENDIF
cFileDbf := Upper( oFiles[ nOpc, 1 ] )
Mensagem( "Confirme criar estrutura para " + cFileDbf )
@ Row(), Col() + 2 GET cConfirma PICTURE "@!"
READ
Mensagem()
IF LastKey() == K_ESC .OR. cConfirma != "SIM"
LOOP
ENDIF
CopyDbfToMySql( cFileDbf, .F., .T., .F., cFileDbf )
ENDDO
RETURN NIL
FUNCTION CopyDbfToMySql( cTable, lTransfere, lCria, lZera, cNewTable )
LOCAL oStru
LOCAL cSql, xValue, nCont, cSqlFix
LOCAL lBegin := .T., cTxt, cKeyName
LOCAL cnGERAL := ADOClass():New( AppConexao() )
LOCAL nSelect := Select()
IF ! File( cTable + iif( ".DBF" $ Upper( cTable ), "", ".DBF" ) )
RETURN NIL
ENDIF
hb_Default( @lCria, .F. )
hb_Default( @lZera, .F. )
hb_Default( @cNewTable, cTable )
cTable := Upper( cTable )
SELECT 0
USE ( cTable ) ALIAS DbfDb
oStru := dbStruct()
cKeyName := "ID" + iif( Left( cTable, 2 ) $ "JP,HL", Substr( cTable, 3 ), cTable )
USE
cSql := "CREATE TABLE IF NOT EXISTS " + cNewTable + " ( " + cKeyName + " INT(9) NOT NULL AUTO_INCREMENT, "
FOR nCont = 1 TO Len( oStru )
IF oStru[ nCont, DBS_NAME ] != cKeyName
cSql += oStru[ nCont, DBS_NAME ] + " "
DO CASE
CASE oStru[ nCont, DBS_TYPE ] == "N"
IF oStru[ nCont, DBS_DEC ] == 0
cSql += " INT( " + Ltrim( Str( oStru[ nCont, DBS_LEN ] ) ) + " ) DEFAULT 0"
ELSE
cSql += " DOUBLE( " + Ltrim( Str( oStru[ nCont, DBS_LEN ] ) ) + " , " + Ltrim( Str( oStru[ nCont, DBS_DEC ] ) ) + " ) DEFAULT 0"
ENDIF
CASE oStru[ nCont, DBS_TYPE ] == "C"
IF oStru[ nCont, DBS_LEN ] < 250
cSql += " VARCHAR( " + Ltrim( Str( oStru[ nCont, DBS_LEN ] ) ) + " ) DEFAULT '' "
ELSE
cSql += " TEXT"
ENDIF
CASE oStru[ nCont, DBS_TYPE ] == "D"
cSql += " DATE "
CASE oStru[ nCont, DBS_TYPE ] == "M"
cSql += " TEXT "
ENDCASE
cSql += " , "
ENDIF
NEXT
cSql += " PRIMARY KEY ( " + cKeyName + " )"
cSql += " )"
cSql += ";"
SayScroll( "Salvando no MySql " + cTable )
IF lCria
cnGERAL:ExecuteCmd( cSql )
ENDIF
IF lZera
cnGERAL:ExecuteCmd( "TRUNCATE TABLE " + cNewTable )
ENDIF
IF ! lTransfere
SELECT ( nSelect )
RETURN NIL
ENDIF
SELECT 0
USE ( cTable ) ALIAS DbfDb
GrafTempo( "Processando " + cTable )
cSqlFix := "INSERT INTO " + cNewTable + " ( "
FOR nCont = 1 TO FCount()
cSqlFix += FieldName( nCont )
IF nCont != FCount()
cSqlFix += ", "
ENDIF
NEXT
cSqlFix += " ) VALUES "
cTxt := ""
DO WHILE ! Eof()
GrafTempo( RecNo(), LastRec() )
Inkey()
cSql := "( "
FOR nCont = 1 TO FCount()
xValue := FieldGet( nCont )
DO CASE
CASE ValType( xValue ) == "N"
cSql += NumberSql( xValue )
CASE ValType( xValue ) == "D"
cSql += DateSql( xValue )
CASE ValType( xValue ) == "C"
xValue := MySqlValidString( xValue )
cSql += StringSql( xValue )
OTHERWISE
cSql += "NULL"
ENDCASE
IF nCont != FCount()
cSql += ","
ENDIF
NEXT
cSql += " )"
IF Len( cTxt ) == 0
cTxt += cSqlFix
lBegin := .T.
ENDIF
IF ! lBegin
cTxt += ", "
ENDIF
lBegin := .F.
cTxt += cSql
IF Len( cTxt ) > MYSQL_MAX_CMDINSERT
cnGERAL:ExecuteCmd( cTxt )
cTxt := ""
ENDIF
SKIP
ENDDO
IF Len( cTxt ) != 0
cnGERAL:ExecuteCmd( cTxt )
ENDIF
USE
SELECT ( nSelect )
RETURN NIL
#define MYSQL_INSERT_COMPLETE 1
#define MYSQL_INSERT_NONAMES 2
FUNCTION cmdSQLInsert( nInsertType, cTableName )
LOCAL cSql := "", nCont, xValue
hb_Default( @nInsertType, MYSQL_INSERT_COMPLETE )
hb_Default( @cTableName, Alias() )
IF nInsertType == MYSQL_INSERT_COMPLETE
cSql := cSql + "INSERT INTO `" + cTableName + "` "
ENDIF
IF nInsertType == MYSQL_INSERT_COMPLETE
cSql += "( "
FOR nCont = 1 TO FCount()
cSql += "`" + FieldName( nCont ) + "`"
IF nCont != FCount()
cSql += ", "
ENDIF
NEXT
cSql += " ) "
cSql += "VALUES "
ENDIF
cSql += "( "
FOR nCont = 1 TO FCount()
xValue := FieldGet( nCont )
DO CASE
CASE ValType( xValue ) == "N"
cSql += NumberSql( xValue )
CASE ValType( xValue ) == "D"
cSql += DateSql( xValue )
CASE ValType( xValue ) == "C"
xValue := MySqlValidString( xValue )
cSql += StringSql( xValue )
OTHERWISE
cSql += "NULL"
ENDCASE
IF nCont != FCount()
cSql += ","
ENDIF
NEXT
cSql += " ) "
RETURN cSql
FUNCTION CopyRecordToMySql( cDatabase, cChaveAcesso )
LOCAL nCont, lInsert := .T., cnMySql := ADOClass():New( AppConexao() )
IF cChaveAcesso != NIL
lInsert := ( ADORecCount( cDatabase, cChaveAcesso ) == 0 )
ENDIF
WITH OBJECT cnMySql
:QueryCreate()
FOR nCont = 1 TO FCount()
:QueryAdd( FieldName( nCont ), FieldGet( nCont ) )
NEXT
IF lInsert
:QueryExecuteInsert( cDatabase )
ELSE
:QueryExecuteUpdate( cDatabase, cChaveAcesso )
ENDIF
ENDWITH
RETURN NIL
STATIC FUNCTION MySqlValidString( xValue )
xValue := StrTran( xValue, Chr(91), " " )
xValue := StrTran( xValue, Chr(93), " " )
xValue := StrTran( xValue, Chr(167), " " )
xValue := StrTran( xValue, Chr(128), "C" )
xValue := StrTran( xValue, Chr(135), "C" )
xValue := StrTran( xValue, Chr(166), "A" )
xValue := StrTran( xValue, Chr(198), "A" )
xValue := StrTran( xValue, Chr(0), "" )
//xValue := StrTran( xValue, Chr(95), "-" ) // usada em email barra inferior
xValue := StrTran( xValue, Chr(229), "O" )
xValue := StrTran( xValue, Chr(124), " " )
xValue := StrTran( xValue, Chr(141), " " )
xValue := StrTran( xValue, Chr(181), " " )
xValue := StrTran( xValue, Chr(162), " " )
xValue := StrTran( xValue, Chr(224), " " )
xValue := StrTran( xValue, Chr(133), " " )
xValue := StrTran( xValue, Chr(144), "E" )
xValue := StrTran( xValue, Chr(160), " " )
RETURN xValue
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
MariaDB
Nota adicional:
O campo chave incremental que é criado segue abaixo:
arquivo JPCLIENTE, vai ser idCLIENTE
arquivo HLCLIENTE, vai ser idCLIENTE
arquivo OUTRONOME, vai ser idOUTRONOME
E o primeiro fonte é pra transferir a pasta inteira de uma vez.
Só tem os tipos de campo que uso: Numérico, Caractere, Data, e Memo.
Pode precisar ajuste pra campo lógico, ou outro.
De um modo geral é:
CREATE DATABASE xxxx ( lista de campos )
INSERT INTO xxxx ( campo1, campo2, campo3 ) VALUES ( valor1, valor2, valor3 )
ou
INSERT INTO xxx VALUES ( valor1, valor2, valor3 )
Prefiro com nome de campo, assim funciona com estrutura diferente, e pra cadastrar o incremental automático.
O campo chave incremental que é criado segue abaixo:
arquivo JPCLIENTE, vai ser idCLIENTE
arquivo HLCLIENTE, vai ser idCLIENTE
arquivo OUTRONOME, vai ser idOUTRONOME
E o primeiro fonte é pra transferir a pasta inteira de uma vez.
Só tem os tipos de campo que uso: Numérico, Caractere, Data, e Memo.
Pode precisar ajuste pra campo lógico, ou outro.
De um modo geral é:
CREATE DATABASE xxxx ( lista de campos )
INSERT INTO xxxx ( campo1, campo2, campo3 ) VALUES ( valor1, valor2, valor3 )
ou
INSERT INTO xxx VALUES ( valor1, valor2, valor3 )
Prefiro com nome de campo, assim funciona com estrutura diferente, e pra cadastrar o incremental automático.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/


