Dentre as ferramentas que o YeAPF dispõe se encontra o ydbmigrate.
Esta ferramenta nos permite exportar e importar dados de varias fontes dentro do universo de banco de dados reconhecidos pelo YeAPF, ou seja: Firebird/Interbase, MySQL e PostgreSQL.
A migração de dados de um banco de dados para outro (de diferente ou mesma natureza) é feita sempre usando modelos intermediários. Por exemplo tabela firebird -> arquivo csv -> tabela mysql
Um exemplo simples disso é feito nos seguintes dois passos (supondo que o banco original contêm uma tabela chamada minhaTabela com dados e o banco de dados copia está vazio)
Exportando
ydbmigrate --db localhost:/bd/original.fdb --user SYSDBA --pass MASTERKEY --type firebird --table minhaTabela --export minhaTabela
Isso vai produzir um arquivo chamado minhaTabela.csv com as colunas e os dados da tabela original. De mais está dizer que essa tabela pode ser aberta com uma planilha como LibreOffice.
Importando
ydbmigrate --db localhost:destino --user root --pass minhaSenha --type mysql --table minhaTabela --import minhaTabela
Pronto, com este segundo passo, agora existe uma tabela chamada minhaTabela no banco destino contendo a estrutura e os dados que haviam no arquivo minhaTabela.csv.
Repare, porém, que a estrutura que o ydbmigrate criou no banco destino, não é obrigatoriamente idêntica à original. Isso é assim porque na importação o ydbmigrate calcula a menor estrutura necessária para conter os dados repassados. Então, caso queira enxugar a sua estrutura de dados, ydbmigrate já resolve boa parte do serviço.
Mantendo a estrutura
Digamos que você quer conservar a estrutura original. O ydbmigrate permite criar um script sql contendo as instruções de criação da tabela mas, não se atendo a estruturas que são particulares a cada banco.
Mesmo este trabalho estando em andamento, já é possível migrar boa parte das estruturas das tabelas usando o ydbmigrate.
ydbmigrate --db localhost:/bd/original.fdb --user SYSDBA --pass MASTERKEY --type firebird --table minhaTabela --table-structure-sql > minhaTabela.sql
Uma vez feito isto, você terá um arquivo minhaTabela.sql na pasta local que pode ser utilizado para criar a estrutura no banco destino usando a ferramenta da sua preferência.
Finalmente, usamos o ydbmigrate para importar a tabela sem mexer na estrutura
ydbmigrate --db localhost:destino --user root --pass minhaSenha --type mysql --table minhaTabela --import minhaTabela --dontModifyStructure
Uma olhada nos parâmetros que o ydbmigrate nos oferece, nos permite ver que há outras coisas que podemos fazer como limpar a tabela antes de importar (–clean) ou não importar dados (–dontImportData) ou não eliminar as colunas vazias (–dontDeleteEmptyFields) ou recriar a tabela com o algoritmo do ydbmigrate mesmo que a tabela já exista (–forceCreateTable)
Bom, é por essas e por outras que usamos ydbmigrate para migrar tabelas
]]>