【问题标题】:How can I specify a schema name for DbUnit to do the insert into?如何为 DbUnit 指定模式名称以进行插入?
【发布时间】:2019-06-21 14:16:46
【问题描述】:

我正在使用 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);

谢谢!

【问题讨论】:

    标签: sql-server junit dbunit


    【解决方案1】:

    有几种方法可以支持这一点,请参阅此处的文档: http://dbunit.sourceforge.net/faq.html#AmbiguousTableNameException

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

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

    【讨论】:

      【解决方案2】:

      如果您使用 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 更新为完全限定名称。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-05
        • 1970-01-01
        • 2012-01-30
        • 1970-01-01
        • 2016-01-21
        • 1970-01-01
        • 1970-01-01
        • 2017-02-26
        相关资源
        最近更新 更多