一尘不染

可以从SQL脚本引用另一个SQL文件

hibernate

基本上我想从Postgres中的SQL文件执行一个SQL文件。

mysql的类似问题:是否可以在另一个sql脚本中从存储过程调用sql脚本?]

为什么?

因为我在一个项目中有2个数据文件,并且我希望有一行可以被注释/取消注释,所以可以加载第二个文件。

澄清: 我想从A.SQL调用B.SQL

说明2: 这是针对使用hibernate模式从初始SQL文件(A.SQL)创建数据库的Spring项目。

经过进一步的思考,看来我可能必须从java / string / hibernate处理这个问题。

下面是配置文件:

spring.datasource.url=jdbc:postgresql://localhost:5432/dbname
spring.datasource.username=postgres
spring.datasource.password=root
spring.datasource.driver-class-name=org.postgresql.Driver

spring.datasource.data=classpath:db/migration/postgres/data.sql
spring.jpa.hibernate.ddl-auto=create

阅读 1149

收藏
2020-06-20

共1个答案

一尘不染

hibernate只是:

  1. 每行读取所有SQL文件
  2. 剥去任何评论(开始的行--///*
  3. 删除任何;在端
  4. 将结果作为单个语句执行

(请参阅SchemaExport.importScriptSingleLineSqlCommandExtractor

这里不支持包含。

你可以做什么:

  • 定义自己ImportSqlCommandExtractor的文件,知道如何包含文件-您可以使用hibernate.hbm2ddl.import_files_sql_extractor=(fully qualified class name)
  • 使用将您的可选文件定义为其他导入文件hibernate.hbm2ddl.import_files=prefix.sql,optional.sql,postfix.sql,您可以根据需要添加和删除文件引用,或者甚至可以从工件中排除该文件-丢失的文件只会创建一条调试消息。
  • 创建一个Integrator可以hibernate.hbm2ddl.import_files动态设置属性的,具体取决于某些环境属性
2020-06-20