2009-06-30 24 views
6

¿Hay alguna utilidad de hibernación que pueda usar para conectarme a la base de datos? enumere todas las tablas y genere scripts sql para "crear tablas + datos" y guarde como * .sql?generar scripts sql

Respuesta

7

exportar datos desde una base de datos como SQL

Uso proyecto liquibase opensource

LiquiBase es una fuente abierta (LGPL), la biblioteca de base de datos independiente para el seguimiento, la gestión y la aplicación de base de datos cambia. Se basa en una premisa simple: todos los cambios de la base de datos (estructura y datos) se almacenan en una forma descriptiva basada en XML y se controlan en el control de la fuente.

generar crear y soltar guión de entidades JPA dados

Utilizamos este código para generar la caída y crear declaraciones: Sólo construir esta clase con todas las clases de entidad y llame a crear/dropTableScript.

Si es necesario, puede usar un nombre persitence.xml y persitance unit en su lugar. Solo di algo y publico el código también.

 
import java.util.Collection; 
import java.util.Properties; 

import org.hibernate.cfg.AnnotationConfiguration; 
import org.hibernate.dialect.Dialect; 
import org.hibernate.ejb.Ejb3Configuration; 

/** 
* SQL Creator for Tables according to JPA/Hibernate annotations. 
* 
* Use: 
* 
* {@link #createTablesScript()} To create the table creationg script 
* 
* {@link #dropTablesScript()} to create the table destruction script 
* 
*/ 
public class SqlTableCreator { 

    private final AnnotationConfiguration hibernateConfiguration; 
    private final Properties dialectProps; 

    public SqlTableCreator(final Collection> entities) { 

     final Ejb3Configuration ejb3Configuration = new Ejb3Configuration(); 
     for (final Class entity : entities) { 
      ejb3Configuration.addAnnotatedClass(entity); 
     } 

     dialectProps = new Properties(); 
     dialectProps.put("hibernate.dialect", "org.hibernate.dialect.SQLServerDialect"); 

     hibernateConfiguration = ejb3Configuration.getHibernateConfiguration(); 
    } 

    /** 
    * Create the SQL script to create all tables. 
    * 
    * @return A {@link String} representing the SQL script. 
    */ 
    public String createTablesScript() { 
     final StringBuilder script = new StringBuilder(); 

     final String[] creationScript = hibernateConfiguration.generateSchemaCreationScript(Dialect 
       .getDialect(dialectProps)); 
     for (final String string : creationScript) { 
      script.append(string).append(";\n"); 
     } 
     script.append("\ngo\n\n"); 

     return script.toString(); 
    } 

    /** 
    * Create the SQL script to drop all tables. 
    * 
    * @return A {@link String} representing the SQL script. 
    */ 
    public String dropTablesScript() { 
     final StringBuilder script = new StringBuilder(); 

     final String[] creationScript = hibernateConfiguration.generateDropSchemaScript(Dialect 
       .getDialect(dialectProps)); 
     for (final String string : creationScript) { 
      script.append(string).append(";\n"); 
     } 
     script.append("\ngo\n\n"); 

     return script.toString(); 
    } 
} 

+2

esto requirió que usted tenga el objeto de dominio para convertir a la secuencia de comandos SQL, ¿verdad? lo que quiero es solo conéctese al servidor de la base de datos y enumere todas las tablas, y genere crear secuencias de comandos. ¿posible? – cometta

+0

Derecho necesita las enities (en perstiance.xml o en una lista >. Si no puede usar liquibase, que exporta un esquema ddl que incluye datos de una conexión jdbc dada. Puede hacer mucho más think (esquema diferido, parche ...). Otra forma es utilizar la navaja suiza DBVisualizer en el trabajo nuestro favorito absoulte (en la edición personal libre !, escrito en java utiliza JDBC). – H2000

+0

hola, traté de usar dbvisualizer, puedo ver -> tabla, ver "para mi base de datos. ¿cómo exportar tablas y datos en secuencia de comandos sql? – cometta

Cuestiones relacionadas