fandang
fandang

Reputation: 607

How can I specify a schema name for DbUnit to do the insert into?

I'm using DBUnit to insert data (dumped from a Postgres DB) into SQL Server, but want to do the insert into schema "rules", not the default "dbo" schema:

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);

Thank you!

Upvotes: 2

Views: 1068

Answers (2)

Alex Cumarav
Alex Cumarav

Reputation: 557

If you use spring boot 2 then you can provide a custom configuration in your config:

@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;
  }
}

Include this configuration and update your datasets.xml to fully qualified names.

Upvotes: 1

camtastic
camtastic

Reputation: 988

There are a few ways to support that, see the documentation here: http://dbunit.sourceforge.net/faq.html#AmbiguousTableNameException

For example you could enable the qualified table names property and use the fully qualified table names like SCHEMA.TABLE. Enabling that involves the following code:

conn=getConnection();
conn.getConfig().setProperty(DatabaseConfig.FEATURE_QUALIFIED_TABLE_NAMES, true);

Upvotes: 1

Related Questions