将初始数据导入 Spring Boot 应用程序

Posted

技术标签:

【中文标题】将初始数据导入 Spring Boot 应用程序【英文标题】:import initial data into spring boot app 【发布时间】:2017-04-20 20:46:51 【问题描述】:

根据文档 http://docs.spring.io/spring-boot/docs/current/reference/html/howto-database-initialization.html 要在启动时导入数据,您可以在 application.properties 中定义这两个属性:

spring.datasource.data=data.sql
spring.datasource.schema=schema.sql

当您拥有这两个文件但我没有架构时,此方法有效。我正在使用休眠生成数据库架构

spring.jpa.hibernate.ddl-auto=create-drop

以前的解决方法Importing Data with spring boot 是为 schema.sql 定义文件空白,但它不再起作用。我会得到文件不能是blank or null的异常。

在 spring 应用程序中我只是简单地定义了

<jdbc:initialize-database data-source="simpleDataSource">
    <jdbc:script location="classpath:dbscripts/data.sql"/>
</jdbc:initialize-database>

它成功了。

有没有办法在 springBoot 中也有相同的行为?

【问题讨论】:

嗨,这个问题有什么好运气吗?你解决了吗? @pmanolov 是的,只需删除 application.properties 中的属性 【参考方案1】:

只需删除schema.sql + 配置选项,Spring Boot 应该会自动选择仅sata.sql

【讨论】:

【参考方案2】:

根据spring源代码-data.sql只有在schema.sql文件存在且不为空的情况下才会被调用。因此,如果您只需要来自data.sql 的脚本,请向schema.sql 添加一些简单的查询,例如

SELECT 1;

也在application.properties添加

spring.datasource.initialization-mode=always

因为默认值仅用于嵌入式数据源。

【讨论】:

以上是关于将初始数据导入 Spring Boot 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

将 Gradle.build 版本导入 Spring Boot

将 Spring Boot 应用程序导入另一个项目

Spring Boot优化

带有存储过程的 Spring Boot MySQL 数据库初始化错误

Spring Boot框架下实现Excel服务端导入导出

在 Spring Boot 应用程序上使用 Flyway 时如何在 H2 中加载初始数据?