Migração de banco de dados

7 respostas
VantuilJose

Pessoal, tenho uma aplicação Java com Caché, agora preciso que a aplicação funcione também com um banco free, MySQL ou FireBird.

Vocês conhecem alguma ferramenta que eu posso utilizar para migrar a estrutura das tabelas e os dados delas pra outro banco?

Tipo um programa que eu posso extrair o modelo dos dados de um banco e depois gravar ele em outro, pode ser direto com jdbc ou script sql mesmo, ou qualquer outra forma… :roll:

Alguma sugestão :?:

7 Respostas

Java_Boy

Vixi,
se existir deve ser paga ($) . Acho que a opção mais viável é remodelar para um modelo relacional.

VantuilJose

A.L, apesar de o caché ser um banco pós-relacional, e você criar as classes e tals, ele oferece acesso relacional com sql, normal, como se fosse qualquer outro banco…
Será que naum existe nenhuma ferramenta que através de jdbc extrai os metadados do banco de uma forma que vc possa criar o banco em outro SGBD.

Tipo o FireBird, no IBExpert ele te dá o código sql de criação das tabelas… Precisava de alguma coisa do tipo… :wink:

Java_Boy

É tava na dúvida dessa parte do sql :oops: . Internamente ele tem um esquema de tabelas né?

Naquele Caché Studio não tem nada?

http://docs.intersystems.com/documentation/cache/20101/index.html#ID_76

VantuilJose

Tem nada… No Sql Manager até tem um assitente de migração de dados, mas migra pro caché, e dá a maior trabalheira… Vc tem que criar umas conexões ODBC no Windows e monte de coisa… Na verdade o que eu queria era uma solução genérica, pra qualquer banco de dados com JDBC, tipo vc especifica o driver e a url e ele faz as coisas pra vc… Será que é possível desenvolver alguma coisa do tipo em Java?

Ele tem o esquema de tabelas sim, você pode acessar os dados por sql ou através de objetos usando a biblioteca da intersystem… Ou acessando os arquivos direto com a linguagem interna dele (maiô locura, kkkk).

Java_Boy

To vendo aqui, no squirrel tem um esquema de driver com o Caché, e pra todos os bancos ele dá a opção de DDL/MDL …é que nao tenho o driver aqui, mas se quiser tentar

http://squirrel-sql.sourceforge.net/

mrrbigu

A melhor opção seria gerar um script através de alguma ferramento do próprio banco, mas se não existe como você falou, existem muitas ferramentas de modelagem ER, entre elas algumas free, que fazem engenharia reversa do banco de dados, resta ver se o caché é suportado por alguma dessas ferramentas. Há uma lista delas em http://www.databaseanswers.org/modelling_tools.htm

Se quiser continuar usando banco de dados orientados a objetos, para evitar ter que fazer todo o mapeamento OR em seu código, pode tentar usar o db4o (http://www.db4o.com), que é gratuito.

VantuilJose

Tô dando uma olhada na lista de softwares…
mrrbigu, não preciso fazer esse mapeamento… Todo o acesso é feito direto com sql, statements e coisas do tipo…

Quanto ao squirrel, criei o driver e quando fui criar um alias, obtive um erro:

java.lang.NoClassDefFoundError: org/fife/ui/rtextarea/RTextArea at net.sourceforge.squirrel_sql.plugins.syntax.rsyntax.RSyntaxSQLEntryAreaFactory.createSQLEntryPanel(RSyntaxSQLEntryAreaFactory.java:37) at net.sourceforge.squirrel_sql.plugins.syntax.SQLEntryPanelFactoryProxy.createSQLEntryPanel(SQLEntryPanelFactoryProxy.java:64) at net.sourceforge.squirrel_sql.client.session.mainpanel.SQLPanel.createGUI(SQLPanel.java:844) at net.sourceforge.squirrel_sql.client.session.mainpanel.SQLPanel.<init>(SQLPanel.java:182) at net.sourceforge.squirrel_sql.client.session.mainpanel.SQLTab.getComponent(SQLTab.java:72) at net.sourceforge.squirrel_sql.client.session.mainpanel.SQLTab.getSQLPanel(SQLTab.java:123) at net.sourceforge.squirrel_sql.client.session.mainpanel.SQLTab.setSession(SQLTab.java:83) at net.sourceforge.squirrel_sql.client.session.mainpanel.SQLTab.<init>(SQLTab.java:42) at net.sourceforge.squirrel_sql.client.gui.session.MainPanel.<init>(MainPanel.java:112) at net.sourceforge.squirrel_sql.client.gui.session.MainPanelFactory.createMainPanel(MainPanelFactory.java:27) at net.sourceforge.squirrel_sql.client.gui.session.SessionPanel.createGUI(SessionPanel.java:478) at net.sourceforge.squirrel_sql.client.gui.session.SessionPanel.initialize(SessionPanel.java:134) at net.sourceforge.squirrel_sql.client.gui.session.SessionInternalFrame.createGUI(SessionInternalFrame.java:123) at net.sourceforge.squirrel_sql.client.gui.session.SessionInternalFrame.<init>(SessionInternalFrame.java:53) at net.sourceforge.squirrel_sql.client.gui.WindowManager.createInternalFrame(WindowManager.java:360) at net.sourceforge.squirrel_sql.client.mainframe.action.ConnectToAliasCommand$Runner.run(ConnectToAliasCommand.java:372) at java.awt.event.InvocationEvent.dispatch(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at net.sourceforge.squirrel_sql.client.Application$1.dispatchEvent(Application.java:195) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) Caused by: java.lang.ClassNotFoundException: org.fife.ui.rtextarea.RTextArea at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at net.sourceforge.squirrel_sql.fw.util.MyURLClassLoader.findClass(MyURLClassLoader.java:209) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) ... 25 more

Criado 16 de março de 2010
Ultima resposta 16 de mar. de 2010
Respostas 7
Participantes 3