首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在一个EmbeddedDatabaseBuilder中将多个SQL文件与不同的分隔符组合起来?

如何在一个EmbeddedDatabaseBuilder中将多个SQL文件与不同的分隔符组合起来?
EN

Stack Overflow用户
提问于 2017-07-05 17:24:46
回答 1查看 566关注 0票数 1

为了在spring引导项目中运行我的测试用例,我需要设置一个嵌入式数据库。

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

一个包含基本的create脚本(NAME =CREATETABLE.sql,分离器= ;),另一个包含存储过程(NAME =RESTRET-ASURDRE.sql,= /;)。

根据this post上的注释,通过在applicationContext.xml中这样做,我可以为这两个sql文件配置不同的分隔符:

代码语言:javascript
复制
<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方法。

代码语言:javascript
复制
public DataSource myDataSource(){
   return new EmbeddedDatabaseBuilder().generateUniqueName(true)
   .setType(EmbeddedDatabaseType.HSQL).addScript("create-table").setSeparator(";").setEncryptEncoding("UTF-8")
   .ignoreFiledDrops(true).build();
}

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

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

这样做是行不通的:

代码语言:javascript
复制
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();
}
EN

回答 1

Stack Overflow用户

发布于 2017-07-06 05:41:21

您不能直接用EmbeddedDatabaseFactor来执行它,但是您可以在EmbeddedDatabaseFactor中使用一个脚本,然后使用一个新的ResourceDatabasePopulator在数据库上执行第二个脚本。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44932497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档