Re: [firebase-br] Mudar dialect de 1 para 3, é possível com gfix né?

Adriano Santos (Yahoo) artes em doiscliques.com
Sáb Mar 17 00:02:39 -03 2007


Renato,

Muito obrigado, sua explicação vai tirar meu sono pelos próximos 12 
meses mais ou menos, rsrs.
Cara, brincadeiras a parte eu estava imaginando que teria que fazer isso 
mesmo, pois o programa que eu dou manutenção/desenvolvimento hoje foi 
arquitetato justamente em Firebird com BDE, imagina minha dor de cabeça. 
Veja só:

1. Não temos chaves estrangeiras.
2. Dialect 1.
3. Charset none.
4. Page size 4096.

Há condições pra se trabalhar desta forma?
Bem, não me culpem, pois não fui eu quem desenvolveu o projeto. Ele vem 
se arrastando há anos desta forma.
Hoje precisamos de uma solução pra nossos clientes on-line. Precisamos 
colocar o sistema pra rodar on-line de qualquer maneira, mas deste jeito 
é quase impossível.
Começamos o desenvolvimento de uma nova aplicação que será em n-tier e 
isolada da aplicação que já vendemos hoje. Porém, DBExpress com dialect 
1 é impossível, por isso a primeira medida é ajustar isso.

Pensei em criar uma base de dados branca com as novas configurações do 
banco e criar esse aplicativo pra transpor os dados antigos para o banco 
novo. Não vai ter jeito.
O que me preocupa ainda mais é o fato de não ter chave estrangeira, ou 
seja, se eu fizer um programa de migração com certeza muitos registros 
orfãos hoje irão dar erro na transposição, aff...nem quero ver. Imagina 
migrar 40, 50 clientes?

Renato Miranda respondeu:
> Tudo bem Adriano e Jeferson ?
>
> Minha experiência é a seguinte:
>
> 1) Trabalhava com Interbase e o famigerado BDE;
>
> 2) Não há como converter os arquivos em BDE (sempre dialect 1) para dialect
> 3, diretamente;
>
> 3) quais as vantagens dessa conversão:
>         3.1. os campos numéricos do dialect 1 (numeric(15,2) ou maiores) que
> apresentam pequenas diferenças nos cálculos (+- 0.01) não sofrerão mais
> desse problema porque o dialect 3 guarda os campos em inteiros;
>        3.2. os campos alfabéticos (varchar) poderão usufruir dos "collates"
> do Firebird 1.5, e, se usar o PTBR se livrará de uma reclamação constante
> dos usuários na hora de juntar "João"," joão", "Joao", JOÃO", "JOÃO", etc.
> Eles aparecerão independentemente do parâmetro de pesquisa;
>
> Se você utilizar um "pump" do dialect 1 para o banco em dialect 3, os campos
> numéricos continuarão como double. Pode-se alterá-los um a um, criando um
> campo novo no dialect 3 (numeric(15,2), por exemplo), movendo os valores do
> campo antigo para lá, excluindo o campo antigo e renomeando o campo novo
> para o nome antigo (para não interferir na programação).
>
> Minha sugestão é a pior possível: criar o banco de dados no dialect 3 com os
> campos numéricos do jeito que você quiser, o collate dos campos alfa da
> maneira que melhor lhe aprouver, fazer um programa para ler o banco de dados
> no dialect 1 e incluir os dados no novo banco com dialect 3.
>
> É  um  trabalho árduo, mas compensa muito.
>
>
>   

-- 
------------------------------------------------------------------------
Adriano Santos
Desenvolvedor Delphi desde 1998. Professor e programador PHP.
Bacharel em Comunicação Social pela Universidade Cruzeiro do Sul, SP.

Colunista e Comissão Editorial da revista ClubeDelphi.





Mais detalhes sobre a lista de discussão lista