我想用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样本记录。
答案 0 :(得分:2)
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