通过Spring data.sql文件生成示例数据库数据

时间:2018-04-10 06:47:22

标签: java spring postgresql spring-boot spring-data

我想用data.sql文件初始化我的postgres数据库。我创建了一些查询:

insert into network_hashrate (
   rep_date, hashrate
) 
select
   date_from - (s.a || ' hour')::interval,
   s.a::double precision
from generate_series(0, 9999, 1) AS s(a);

甚至可以在Spring中使用postgres函数填充数据库吗?如果没有,我的其他选择是什么。我需要10k样本记录。

3 个答案:

答案 0 :(得分:2)

根据Spring Boot doc

  

Spring Boot可以自动创建DataSource的架构(DDL脚本)和初始化它(DML脚本)。它从标准的根类路径位置加载SQL:schema.sql和 data.sql

因此,如果您只需要填充数据 - 只需使用sql脚本创建data.sql文件,将其放在resources文件夹中,然后检查spring.jpa.hibernate.ddl-auto中的application.properties设置为none

如果您需要更灵活的解决方案,可以使用Flyway。要使用它 - 将其依赖项添加到项目中

<dependency>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-core</artifactId>
</dependency>

spring.jpa.hibernate.ddl-auto转为validate

spring.flyway.enabled=true添加到application.properties

将'migration'sql脚本放到'default'位置resources/db/migration文件夹中。像这样打电话给他们,例如:

V1__schema_initialization.sql
V2__data_population.sql

当您的春季启动应用程序启动时,Flyway会检查您的数据库是否缺少架构和数据,然后按顺序滚动这些脚本。

有关Flyway的更多信息,请here

答案 1 :(得分:0)

似乎你可以在db scheme validate / created之后运行sql脚本 只需命名sql查询文件import.sql,spring就应该按照doc

运行它

答案 2 :(得分:0)

您需要能够跟踪运行的查询和运行时的内容。此外,应该只在应用程序启动时运行一次。

liquibase是一个可用于此的选项。

它将允许DDL以及DML。

此链接将提供详细信息,如何使用spring配置liquibase

https://medium.com/@harittweets/evolving-your-database-using-spring-boot-and-liquibase-844fcd7931da