Clipper On Line • Ver Tópico - Tutorial de SQL

Tutorial de SQL

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

 

Tutorial de SQL

Mensagempor Vlademiro » 19 Ago 2020 11:50

Avatar de usuário

Vlademiro
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 674
Data de registro: 11 Jul 2005 02:46
Curtiu: 14 vezes
Mens.Curtidas: 50 vezes

Tutorial de SQL

Mensagempor JoséQuintas » 19 Ago 2020 12:01

Mario Mesquita escreveu:Tem alguma rotina de migração DBF para MySql com criação de tabelas, etc, por aqui? Algo que possa servir de ponto de partida para converter as tabelas DBF?
Fazer isso na mão parece ruim, como estou engatinhando acho que com algo programado deve ser melhor...
Procurei por aqui mas não achei, se tiver alguma dica me ajuda muito,


Na prática é um bom começo pra aprendizado.

É pegar a estrutura, fazer o CREATE TABLE, e depois fazer INSERT dos campos.
Vai fazer isso depois milhares de vezes, o que custa fazer também no início?

Crie uma, dê uma olhada pelo HeidiSQL como foi criada, e faça igual.

aStruList := dbStruct()

cSQL := "CREATE TABLE " + Dbf() + "( "

FOR EACH oElement IN aStruList
   cName := oELement[ F_NAME ]
   cType := oElement[ F_TYPE ]
   nLen  := oElement[ F_LEN ]
   nDec := oElement[ F_DEC ]
   DO CASE
   CASE cType == "C"
      cSQL += cName + " VARCHAR(|  + lTrim( Str( nLen ) ) + ")"
...
NEXT


E algo parecido para INSERT.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 14689
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 864 vezes

Tutorial de SQL

Mensagempor Mario Mesquita » 19 Ago 2020 15:01

Boa tarde a todos.

Quintas, estou seguindo seus passos. Baixei o MySql e o HeidiSQL, agora vendo como faz, achei um curso no YouTube, pq o pouco que sabia azedou... vamos em frente, afinal.

Beleza, vou por aí, tudo agora é aprendizado. Mas no futuro quando migrar os DBFs em clientes, vou precisar de algo mais automatizado, melhor ter algo
pronto pra fazer isso. Nem é pra pensar nesse minuto mas é inevitável.

Tô animado, já era para eu ter subido no bonde do SQL faz tempo.

Pra quem tá meio mais ou menos como eu, o curso no YT, é sempre uma ajudinha:

https://www.youtube.com/user/bosontreinamentos

Saudações,
Mario.
Avatar de usuário

Mario Mesquita
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 431
Data de registro: 08 Dez 2009 12:47
Cidade/Estado: Rio de Janeiro
Curtiu: 6 vezes
Mens.Curtidas: 8 vezes

Tutorial de SQL

Mensagempor Mario Mesquita » 19 Ago 2020 16:39

Valdomiro, valeu!

Agora que vi. Esse programa está no pacote do HMG 3.4.4, é um bom ponto de partida pra estudos.

Sds,
Mario.
Avatar de usuário

Mario Mesquita
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 431
Data de registro: 08 Dez 2009 12:47
Cidade/Estado: Rio de Janeiro
Curtiu: 6 vezes
Mens.Curtidas: 8 vezes

Tutorial de SQL

Mensagempor JoséQuintas » 19 Ago 2020 20:07

É que tem o detalhe da codepage.
Depende da codepage do aplicativo, e da codepage usada no MySQL.
A prova final é sua, porque depende do conteúdo encontrado nos DBFs.

E como isso pode acontecer durante o uso depois, já se prepara a partir dos DBFs/conteúdos que tem hoje, porque teoricamente é o mesmo que vai ter depois que estiver em uso.

Uma coisa que faz muita diferença nessa inclusão em massa, é incluir vários registros por vez, ao invés de um por um.
Ao invés de INSERT pra um registro, faz INSERT PRA vários.

Aqui coloquei como limite um comando com até 256.000 caracteres.
Limitei pelo comando, e não pela quantidade.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 14689
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 864 vezes

Tutorial de SQL

Mensagempor Mario Mesquita » 23 Ago 2020 11:18

Bom dia e bom domingo a todos.

Interessante esse ponto sobre o codepage. Eu tenho tabelas em ANSI e UTF-8 pq ainda tenho coisas em HMG 3.0.46 e coisas na
versão 3.4.4. A ideia é passar tudo pra 3.4.4 com tabelas em UTF-8. Tem a parte chata de converter essas tabelas em ANSI.
E, pelo que vi, tem que se ligar no codepage da BD no MySql, né?

Uma dúvida: tenho campos que sofrem incremento tipo protocolos, números de operação ou algum tipo de numeração. Os campos são
caractere e incremento usando VAL(variável) + 1. NO caso do MySql, qual a técnica recomendada? Campo numérico com auto incremento
ou pode ser desse jeito?

Saudações,
Mario.
Avatar de usuário

Mario Mesquita
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 431
Data de registro: 08 Dez 2009 12:47
Cidade/Estado: Rio de Janeiro
Curtiu: 6 vezes
Mens.Curtidas: 8 vezes

Tutorial de SQL

Mensagempor JoséQuintas » 23 Ago 2020 20:41

Melhor deixar por conta do MySQL, assim NUNCA vai ter problema.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 14689
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 864 vezes

Tutorial de SQL

Mensagempor Mario Mesquita » 24 Ago 2020 10:44

Bom dia e boa semana a todos.

Valeu, Quintas. Então deixo os campos como numéricos com auto incremento, certo? E formato como "@R" ou similar né? Já que não podem ser tipo caractere.

Saudações,
Mario.
Avatar de usuário

Mario Mesquita
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 431
Data de registro: 08 Dez 2009 12:47
Cidade/Estado: Rio de Janeiro
Curtiu: 6 vezes
Mens.Curtidas: 8 vezes

Tutorial de SQL

Mensagempor JoséQuintas » 24 Ago 2020 11:46

O detalhe é este: é um campo numérico comum.
Apenas na inclusão é que pode deixar por conta do MySQL fazer a numeração.

Pode fazer:

INSERT INTO CLIENTES ( IdCodigo, Nome ) VALUES ( 10, "JOSE" )

ou:

INSERT INTO CLIENTES ( NOME ) VALUES ( "JOSE" )

E pra saber o código que foi atribuído, em seguida é fazer:
SELECT LAST_INSERT_ID()
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 14689
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 864 vezes

Anterior



Retornar para Contribuições, Dicas e Tutoriais

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 3 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro