Convertendo arquivo de dados Paradox em tabela MySQL

É absolutamente comum hoje em dia termos que migrar ou adaptar aplicações legadas ao novo paradigma de desenvolvimento de sistemas de informação (nem tão novo assim; nem tão paradigma assim, não é mesmo?! :)), ou seja, transformar aplicações antigas desenvolvidas em Delphi, VB, Clipper e outras linguagens, que utilizavam o Paradox como GA (grupo de arquivos de dados), para aplicações em JAVA, ASP, Ruby On Rails ou PHP com os dados sendo armazenados em bancos MySQL.

O problema fica por conta de quando temos que converter os arquivos *.DB em tabelas de dados, de uma base MySQL. Existe uma série de programas proprietários for Windows que são capazes de efetuar esta conversão (caso do FullConvert e do Data Base Convert). Estas são aplicações pagas e com limitações extremas em suas versões sharewares. Mas acalme-se, nem tudo está perdido, você pode fazer esta conversão no Linux utilizando apenas softwares livres e/ou gratuitos. Resumindo, você pode proceder com a conversão no próprio servidor MySQL, rodando naquela sua máquina Linux.

Tomarei como base aqui a distribuição Debian Linux 4.0 Etch, mas a “receita de bolo” exposta aqui deve ser facilmente utilizada em quaisquer outros sabores de distros (com algumas pequenas e poucas adaptações). Antes de qualquer coisa, certifique-se que a sua distro Debian tem os pacotes gcc, g++ e make previamente instalados. Caso não os tenha, proceda com as respectivas instalações. Estes softwares serão utilizados para a compilação manual de dois pequenos pacotes durante o nosso exemplo.

apt-get install nome_do_pacote

Num segundo momento, vamos instalar dois conjuntos de bibliotecas responsáveis no Linux por prover mecanismos de acesso à arquivos Paradox. Acho que fica desnecessário aqui enfatizar que tais tarefas devem ser feitas com logon na conta root, não?! 😉

apt-get update (esta instrução apenas atualiza o banco de dados interno de repositório do apt. Saiba mais em http://www.jack.eti.br/www/?p=98)

apt-get install pxlib1

apt-get install libsqlite0

Agora é chegada a hora de instalarmos os pacotes que efetivamente farão o “trabalho sujo” da conversão. Trata-se do pxlib e do pxview. O primeiro é pré-requisito para a instalação e funcionamento adequados do segundo. Já o pxview possuí métodos que possibilitam a leitura (visualização) e geramento de uma saída, no formato de um arquivo-comandos SQL (que a posteriori pode ser interpretado pelo MySQL), quase como um mysqldump! 😉

Faça o download de ambos os pacotes, descompacte e compile-os a partir dos fontes. Este procedimento tornou-se necessário nesta versão do Debian, em virturde de que os pacotes parecem não ter mais suporte na família stable dos MIRRORS Debian. De todo modo, no website do projeto, no sourceforge.net você encontrará arquivos pré-compilados no formato .deb e .rpm também. Aqui neste texto, trata-se apenas de uma opção pessoal a compilação a partir dos fontes.

Obs: Faça a instalação nesta ordem (primeiro o pxlib, depois o pxview). Note que as versões trabalhadas aqui, são as mais atuais no momento em que escrevo este artigo.

tar -xzvf pxlib-0.6.2.tar.gz

cd pxlib-0.6.2

./configure

make

make install

tar -xzvf pxview_0.2.5.orig.tar.gz

cd pxview- 0.2.5

./configure

make

make install

Pronto, os pré-requisitos a nível de pacotes já foram satisfeitos. Agora, com a base de dados previamente criada no seu MySQL (obviamente você é livre para escolher a maneira com a qual quer criar a base de dados, seja via prompt de comando ou via engine (MySQLFront, PHPMyAdmin, etc…)), basta utilizar o pxview para efetuar a conversão e depois fazer o “import” para o banco de dados MySQL:

/usr/local/bin/pxview -s -o CadClientes.sql CadClientes.DB

  • A opção -s informa ao programa pxview que a conversão deve ser feita no formato SQL de instruções;
  • A opção -o informa que a saída do comando deve ser direcionada para um arquivo (no caso, o CadClientes.sql);

O arquivo CadClientes.sql será gerado no diretório atual. Agora, basta conectar à base de dados previamente existente e fazer o import no MySQL. Isso pode ser feito tranquilamente através de engines, mas aqui usarei o próprio prompt de comando do SGBD:

#mysql -u root -p sistema_db < CadClientes.sql

Se tudo ocorreu conforme o mencionado aqui, neste exato momento você já terá incorporado ao seu banco de dados MySQL, na base sistema_db, a tabela CadClientes, com todos os campos (estrutura) e dados; assim como havia no arquivo *.DB. É possível que o software tenha gerado a tabela no MySQL com o nome de resttemp_DB. Para consertar este problema, use o seguinte procedimento:

#mysql -u root -p sistema_db

mysql> alter table resttemp_DB RENAME CadClientes;

mysql> quit;

Ok… Você acabou de renomear a tabela de dados no seu MySQL.

Referências:

http://www.vivaolinux.com.br/dicas/verDica.php?codigo=6842

http://www.mysql.org

http://sourceforge.net/projects/pxlib