2017-07-05 18 views
0

我需要设置一个嵌入式数据库才能在弹簧引导项目中运行我的测试用例。如何在一个EmbeddedDatabaseBuilder中将多个SQL文件与不同的分隔符组合在一起?

我已经分居我的SQL脚本为两个文件,以便为它们设置不同的分隔符:

一个包含了我的基本创建表脚本(NAME =创建-table.sql,选=;)和其他包含存储过程(NAME = stored-procedures.sql,SEPARATOR = /;)。

按照意见上this post,我可以通过在applicationContext.xml中这样配置两个SQL文件不同的分隔符:

<jdbc:initialize-database data-source="mctDBDataSource" ignore-failures="DROPS" >  
    <jdbc:script location="classpath:databaseTesting/inMemory/createInMemoryDatabase.sql" separator=";"/> 
    <jdbc:script location="classpath:databaseTesting/inMemory/createInMemoryDatabaseProcedures.sql" separator="/;"/> 
</jdbc:initialize-database> 

但在我的情况下,我尝试使用非XML方法,因为下面。

public DataSource myDataSource(){ 
    return new EmbeddedDatabaseBuilder().generateUniqueName(true) 
    .setType(EmbeddedDatabaseType.HSQL).addScript("create-table").setSeparator(";").setEncryptEncoding("UTF-8") 
    .ignoreFiledDrops(true).build(); 
} 

上述代码工作正常,如果我只使用一个SQL文件。

如何将两个SQL文件与不同的分隔符组合起来以创建一个DataSource。

这样做行不通:

public DataSource myDataSource(){ 
    return new EmbeddedDatabaseBuilder().generateUniqueName(true) 
    .setType(EmbeddedDatabaseType.HSQL).addScript("create-table") 
    .setSeparator(";").addScript("stored-procedures").setSeparator("/;")setEncryptEncoding("UTF-8") 
    .ignoreFiledDrops(true).build(); 
} 

回答

0

你不能用一个EmbeddedDatabaseFactor直接做到这一点,但你可以在EmbeddedDatabaseFactor使用一个脚本,然后用新鲜的ResourceDatabasePopulator执行第二脚本数据库。

相关问题