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

时间:2015-10-14 08:01:22

标签: spring hibernate postgresql jpa

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

类似的问题:mysql:is it possible to call a sql script from a stored procedure in another sql script?

为什么呢?

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

澄清: 我想从A.SQL

调用B.SQL

Clarification2: 这是一个Spring项目,它使用hibernate从初始SQL文件(A.SQL)创建数据库。

进一步反思似乎我可能要从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

2 个答案:

答案 0 :(得分:2)

Sql不支持导入其他文件,但如果使用psql执行脚本,可以使用np.diag(myM) array([4, 4, 4], dtype=object) 语法:

\i

如果您使用除SELECT * FROM table_1; \i other_script.sql SELECT * FROM table_2; 以外的其他客户端执行sql,这可能不起作用。

答案 1 :(得分:1)

Hibernate只是:

  1. 每行读取所有SQL文件行
  2. 删除任何评论(以--///*开头的行
  3. 删除最后的;
  4. 将结果作为单个语句执行
  5. (请参阅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属性 - 具体取决于某些环境属性