Men*_*los 9 postgresql spring hibernate jpa
基本上我想从 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
Run Code Online (Sandbox Code Playgroud)
Sql中不支持导入其他文件,但是如果你用psql执行脚本可以使用\i语法:
SELECT * FROM table_1;
\i other_script.sql
SELECT * FROM table_2;
Run Code Online (Sandbox Code Playgroud)
如果您与其他客户端一起执行 sql,这可能不起作用psql。
休眠只是:
--,//或开头的行/*);最后的任何内容(参见SchemaExport.importScript和SingleLineSqlCommandExtractor)
这里不支持包含。
你可以做什么:
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属性的方法 - 根据某些环境属性