2015-10-14 59 views
2

基本上我想从Postgres中的SQL文件执行SQL文件。可以从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: 这对于那些使用Hibernate创建从最初的SQL文件数据库中的Spring项目(A. SQL)。

进一步反思,似乎我可能不得不从java /字符串/休眠处理这个。

下面是配置文件:在SQL不支持

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 
+0

你怎么想执行的SQL文件?用psql? –

+0

@Tommaso Di Bucchianico我想从另一个文件调用一个sql文件。 –

回答

1

Hibernate的只是:

  1. 阅读每行所有的SQL文件行
  2. 条任何评论(线开始--///*
  3. 删除末
  4. 任何;以单个语句执行结果

(请参阅SchemaExport.importScriptSingleLineSqlCommandExtractor

这里不包含对include的支持。

你可以做什么:

  • 定义自己的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财产 - 这取决于一些环境属性
2

的其他文件的导入,但如果你用psql执行该脚本可以使用\i语法:

SELECT * FROM table_1; 
\i other_script.sql 
SELECT * FROM table_2; 

如果您使用psql以外的其他客户端执行sql,则这可能不起作用。

+0

我试过....它只能通过控制台。 +1虽然... –

+0

是的,你仍然没有说你想如何执行脚本 –

+0

它通过Java Spring项目中的Hibernate运行。你的权利,我没有。我认为也许我需要在hibernate/java中处理这个问题。 –

相关问题