如何为DbUnit指定要插入的架构名称?

时间:2019-06-21 14:16:46

标签: sql-server junit dbunit

我正在使用DBUnit将数据(从Postgres DB转储)插入SQL Server,但想插入到模式“规则”而不是默认的“ dbo”模式中:

Class.forName(net.sourceforge.jtds.jdbc.Driver.class.getName());
Connection sqlsCon = DriverManager.getConnection("jdbc:jtds:sqlserver://5.5.5.5:7000;databaseName=THE_DB", "THE_USER", "THE_PW");
IDatabaseConnection sqlsDbCon = new DatabaseConnection(sqlsCon);
DatabaseOperation.CLEAN_INSERT.execute(sqlsDbCon, partialDataSet);

谢谢!

2 个答案:

答案 0 :(得分:0)

有几种支持该方法的方法,请参见此处的文档: http://dbunit.sourceforge.net/faq.html#AmbiguousTableNameException

例如,您可以启用合格的表名属性,并使用完全合格的表名,例如SCHEMA.TABLE。启用涉及以下代码:

Text Markup

答案 1 :(得分:0)

如果您使用 spring boot 2,那么您可以在配置中提供自定义配置:

@TestConfiguration
public class MyDbUnitConfiguration {

  @Bean
  public DatabaseDataSourceConnectionFactoryBean dbUnitDatabaseConnection(DataSource dataSource) {
        DatabaseConfigBean databaseConfig = new DatabaseConfigBean();
        databaseConfig.setQualifiedTableNames(Boolean.TRUE);

        DatabaseDataSourceConnectionFactoryBean databaseDataSourceConnectionFactory =
        new DatabaseDataSourceConnectionFactoryBean();
        databaseDataSourceConnectionFactory.setDatabaseConfig(databaseConfig);
        databaseDataSourceConnectionFactory.setDataSource(dataSource);
        return databaseDataSourceConnectionFactory;
  }
}

包括此配置并将您的 datasets.xml 更新为完全限定名称。