генерировать скрипты sql - PullRequest
6 голосов
/ 30 июня 2009

есть ли спящий утренник, который я могу использовать для подключения к базе данных. перечислите все таблицы и сгенерируйте сценарий sql для «создания таблиц + данных» и сохраните как * .sql?

1 Ответ

7 голосов
/ 30 июня 2009

Экспорт данных из базы данных в виде sql

Используйте liquibase проект с открытым исходным кодом

LiquiBase - независимая от базы данных библиотека с открытым исходным кодом (LGPL) для отслеживания, управления и применения изменений в базе данных. Он основан на простой предпосылке: все изменения базы данных (структура и данные) хранятся в описательной манере на основе XML и проверяются в системе контроля версий.

Создание сценария создания и удаления для данных объектов JPA

Мы используем этот код для генерации отбрасывания и создания операторов: Просто создайте этот класс со всеми классами сущностей и вызовите create / dropTableScript.

При необходимости вы можете использовать вместо него файл persitence.xml и имя устройства. Просто скажи что-нибудь и я тоже выкладываю код.

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<Class<?>> 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();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...