Gene_sys Novato

Registrado: Quarta-Feira, 7 de Outubro de 2015 Mensagens: 8
|
Enviada: Qua Mar 01, 2017 1:12 pm Assunto: Ferramentas para Migração Firebird X MySQL |
|
|
Falai garotos e garotas de programa
Desenvolvi duas planilhas em Excel para me ajudarem a montar um integrador entre a retaguarda e um frente recém adquirido, essencialmente tinha que copular dados de um banco Firebird para um MySQL e fazer os retornos das vendas, como teria que repetir o processo para inumares tabelas acabei desenvolvendo-a, após ter acabado o projeto com a ajuda da planilha em um tempo bem reduzido já utilizei o método novamente em outra aplicação de migração de base de dados firebird x firebird as planilhas estão no link abaixo, como não foram feitas com o intuito comercial ou uso de terceiros dei umas ajustadasinhas e vou fazer um meio tutorial de seu uso aqui transpondo de um Firebird para um MySQL
https://1drv.ms/f/s!AsJbKMCu3n1Ij6EffNA7ynVgyi7XZA
O primeiro passo é ir a sua ferramenta de manutenção de banco e arrastar sua tabela para o editor de sql Name and type
copie essa lista e cole na planilha 2 "Tabela Destino"
[img]https://i58.servimg.com/u/f58/19/63/43/67/210.png1[/img]
repita o processo para a tabela de origem
no meu caso Firebird Name + Tipe
e colar agora na planilha 3 "Tabela_Origem_Firebird"
Vamos a nossa planilha geradora de SQL
ela deve estar mais ou menos assim
Configurando
Basicamente você deverá ter em seu projeto suas querys ligadas as suas respectivas bases de dados deixei quatro campos para para seus nomes, uma vez estes descritos vamos as tabelas
Selecione as tabelas de origem e destino e preencha os nomes das tabelas origem e destino, o tipo de sql desejado, você pode declarar também a quantidade de espaços para identação do código final.
Métodos e procedimentos
para integrar bancos você sempre terá que formatar campos ou alterar tipos então declare seu principais métodos e procedimentos que o fazem
note que em também declarei meus valores default para métodos com os mesmos
terminando isso vamos as amarrações de banco e métodos e condições
ex:
Note que meu campo ID e um campo integer e meu campo código é string de forma que eu preciso de um método de conversão StrToInt , Outra coisa e que determinei que este campo faz parte da minhas condições ou é meu índice da tabela. Note também que eu tenho um método implementado em meu código chamado Sonumeros, eu o uso para formatar meu CPF antes de passa-lo. Também simulei a entrada de um valor fixo para um campo que digamos que não exista em sua base de origem.
Tendo procedido estes passos a sua SQL está montada usando os campos que foram amarrados, tendo duas opções UPDATE ou INSERT, já considerando os métodos e tamanhos dos campos string de destino, quando maiores que os campos de origem. também com o espaço inicial de identação.
UPDATE duas sqls serão montadas tanto a de origem quanto a de destino
QrAba.Close;
QrAba.SQL.Clear;
QrAba.SQL.Add('Select codigo,nome,apelido,email,rg,cpf');
QrAba.SQL.Add(' From C000007 Where codigo = :codigo');
QrAba.ParamByName('codigo').AsString := SuaQuery.FieldByName('codigo').AsString;
QrAba.Open;
QrExecFrente.Close;
QrExecFrente.SQL.Clear;
QrExecFrente.SQL.Add('Select ID,NOME,FANTASIA,EMAIL,CPF_CNPJ,RG,ORGAO_RG');
QrExecFrente.SQL.Add('');
QrExecFrente.SQL.Add(' From cliente Where ID = :ID');
QrExecFrente.ParamByName('`ID`').AsInteger := QrAba.FieldByName('codigo').AsString;
QrExecFrente.Open;
QrExecFrente.Edit;
QrExecFrente.FieldByName('ID').AsInteger := StrToInt(QrAba.FieldByName('codigo').AsString);
QrExecFrente.FieldByName('NOME').AsString := QrAba.FieldByName('nome').AsString;
QrExecFrente.FieldByName('FANTASIA').AsString := QrAba.FieldByName('apelido').AsString;
QrExecFrente.FieldByName('EMAIL').AsString := QrAba.FieldByName('email').AsString;
QrExecFrente.FieldByName('CPF_CNPJ').AsString := Copy(sonumeros(QrAba.FieldByName('cpf').AsString),1,20);
QrExecFrente.FieldByName('RG').AsString := Copy(QrAba.FieldByName('rg').AsString,1,20);
QrExecFrente.FieldByName('ORGAO_RG').AsString := 'SPTC';
QrExecFrente.Post;
INSERT Sql única de inserção
QrExecFrente.Close;
QrExecFrente.SQL.Clear;
QrExecFrente.SQL.Add('INSERT INTO cliente(');
QrExecFrente.SQL.Add('`ID`,`NOME`,`FANTASIA`,`EMAIL`,`CPF_CNPJ`,');
QrExecFrente.SQL.Add('`RG`,`ORGAO_RG`');
QrExecFrente.SQL.Add(') VALUE (');
QrExecFrente.SQL.Add(':ID,:NOME,:FANTASIA,:EMAIL,:CPFCNPJ,');
QrExecFrente.SQL.Add(':RG,:ORGAORG);');
QrExecFrente.ParamByName('ID').AsInteger := StrToInt(QrAba.FieldByName('codigo').AsString);
QrExecFrente.ParamByName('NOME').AsString := QrAba.FieldByName('nome').AsString;
QrExecFrente.ParamByName('FANTASIA').AsString := QrAba.FieldByName('apelido').AsString;
QrExecFrente.ParamByName('EMAIL').AsString := QrAba.FieldByName('email').AsString;
QrExecFrente.ParamByName('CPFCNPJ').AsString := Copy(sonumeros(QrAba.FieldByName('cpf').AsString),1,20);
QrExecFrente.ParamByName('RG').AsString := Copy(QrAba.FieldByName('rg').AsString,1,20);
QrExecFrente.ParamByName('ORGAORG').AsString := 'SPTC';
QrExecFrente.ExecSQL;
OBS: As planilhas estão protegidas para evitar apagar campos de calculo mas na verdade estão sem senha. ou seja a senha é em branco. |
|