sql-server - 创建有效的 SQL 脚本来生成 SQL Server 数据库

标签 sql-server hsqldb data-migration

我正在测试一个使用 SQL Server 数据库的应用程序。出于测试目的,我真的希望能够使用内存数据库,例如 HSQL。我实际上已经运行了测试,但仍有一个突出的痛点 - 我很难生成可用于构建 HSQL 数据库的 SQL 脚本。由于该系统仍处于开发阶段,数据库更改可能而且确实会发生,因此我不想花费所有时间手动更新 SQL 脚本。

在 SQL Server Management Studio 中,我可以生成一个脚本来构建该数据库。然而,该脚本包含许多特定于 SQL Server 的“内容”。因此,我不能只是将该脚本带到 HSQL 并让它执行。相反,我需要花费大量时间剔除在 HSQL 中不起作用的内容。

一位同事建议使用 PowerBuilder 来生成脚本,虽然它生成的脚本有些干净,但它仍然无法在 HSQL 中“按原样”运行。

任何人都可以建议一种方法(工具、流程等),我可以用它来指向 SQL Server 数据库并为自己生成一个脚本,该脚本将在 HSQL 中构建完全相同的数据库吗?

谢谢!

最佳答案

假设您使用 Hibernate,您可以在测试用例中配置 Hibernate 以在创建 sessionFactory 时创建表。

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="mappingResources">
        <list>
            <value>...hbm file...</value>
            ...
        </list>
    </property>
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop>
            ...
            <prop key="hibernate.hbm2ddl.auto">create</prop>
        </props>
    </property>
</bean>

此方法的唯一缺点是,如果您的 HBM 文件没有与物理 SQL Server 数据库匹配的设置(例如,您在 HBM 文件中省略了某些约束或列),则在 HSQL 中创建的表将是将会有所不同。

关于sql-server - 创建有效的 SQL 脚本来生成 SQL Server 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4830752/

相关文章:

sql-server - 如何在使用内连接时在sql server中获取计数?

sql-server - Getdate() 函数获取我的时区的日期

java - 如何使用HSQLDB为JDBC应用程序动态生成表

junit - HSQLDB 和 group by 的奇怪行为

mysql - 如何导入部分xml到mysql表?

mysql - SQL - 为员工建模角色

c# - SQL Server 数据库与我在 c# 中的项目同步

java - 使用 Hypersonic 数据库的 JUnit 测试

mysql - 复制具有不同列名的表 MySQL

SSIS ISNULL 为空字符串