H2数据库如何在SQL脚本内部加载引用其他SQL脚本
H2数据库SQL文件嵌套引入说明
H2原生支持在单个SQL文件内部引入执行其他SQL脚本,你之前尝试的\source、@、\include属于其他数据库客户端的专有命令,H2的SQL解析器无法识别,因此不会生效。
现有文件结构
create-tables.sqlinsert-data.sqldata-1.sqldata-2.sqldata-3.sql
正确实现方式
你当前JDBC连接串中INIT参数使用的runscript from 'xxx'就是H2执行外部脚本的原生语法,该语法同样可以直接写在普通SQL文件内部。
直接在insert-data.sql文件中写入以下语句即可引入三个子脚本:
-- 按实际路径填写,路径规则和你INIT参数中的路径规则一致,相对于程序运行工作目录 RUNSCRIPT FROM 'src/test/resources/sql/data-1.sql'; RUNSCRIPT FROM 'src/test/resources/sql/data-2.sql'; RUNSCRIPT FROM 'src/test/resources/sql/data-3.sql';
如果你的SQL脚本随项目打包在classpath路径下,推荐使用classpath前缀写法,不受程序启动路径影响:
RUNSCRIPT FROM 'classpath:/sql/data-1.sql'; RUNSCRIPT FROM 'classpath:/sql/data-2.sql'; RUNSCRIPT FROM 'classpath:/sql/data-3.sql';
注意事项
RUNSCRIPT是标准SQL语句,末尾必须加英文分号- 如果脚本包含非ASCII字符(比如中文注释、中文数据),可以追加字符集参数避免乱码:
RUNSCRIPT FROM 'xxx.sql' CHARSET 'UTF-8'; - 你现有的JDBC连接配置不需要修改,替换insert-data.sql中的无效引入命令即可正常执行
内容的提问来源于stack exchange,提问作者Pamba
相关产品推荐
相关产品推荐

