Extraindo metadata de um banco Firebird
Hoje precisei incluir no script de build de um projeto a extração automática de metadata do banco de dados de desenvolvimento. Normalmente eu realizo esse processo manualmente através do IBExpert e não me lembrava como fazer isso via linha de comando. Um pouco de pesquisa na documentação do Interbase 6 (que ainda é a maior documentação disponível para o Firebird, visto que este se originou a partir do IB6) e achei:
isql -extract -o [nome arquivo] [banco de dados]
Exemplo:
isql -extract -o metadata.sql banco.fdb
Onde metadata.sql é o arquivo que será gerado, e banco.fdb é meu banco Firebird supondo que ele está no diretório atual. Claro que a pasta bin do Firebird tem que estar no path, pois é lá que o isql se encontra.
Uma das utilidades deste recurso é por exemplo incluir no seu build a extração de metadata e atualização deste no controle de versão.





Show de bola Eric, estava precisando fazer isto agora mesmo!
Feed providencial!
Que bom que foi útil!
E ai Erick, você tem o manual da estrutura do Interbase, tipo como funciona os relacionamentos das tabelas de Sistema dele, para mim por exemplo extrair a ordem que as tabelas deveriam ser inseridas de uma base para outra para nao problema de chave estrangeira???
Não tenho não, talvez vc encontre algo no site firebase.com.br.
Erick, grato pela dica. Acabei de testar e funcionou legal. Mas como faço pra incluir as instruções de alimentação dos dados junto com a DDL?
Boa pergunta, mas não sei. Dê uma pesquisada na documentação do IB6 Open Source, pois é a documentação mais detalhada existente “relacionada” ao Firebird.
TEstei aqui e nao deu certo… ele criou o arquivo metadata.sql que ficou vazio e deu uma mensagem de erro statement Failed, SQLCODE = -902
e seu a mensagem do nome e senha nao está definido.
Bom dia.
Seu artigo foi muito útil pra mim. Entretanto tive o mesmo problema do colega acima. Só para complementar, no fim do comando basta insetir -u [nome de usuário] -p[senha de acesso] que funciona. o comando completo ficaria assim:
isql -extract -o [nome arquivo] [banco de dados] -u [nome de usuário] -p[senha de acesso]
exemplo:
isql -extract -o metadata.sql banco.fdb -u sysdba -p masterkey
valew galera, abraço!