一尘不染

从Spring JDBC模板执行SQL文件

java

我正在尝试编写一些代码,以读取一个SQL文件(用CREATE TABLE分隔的多个语句;)并执行所有语句。

在纯JDBC中,我可以这样写:

String sqlQuery = "CREATE TABLE A (...); CREATE TABLE B (...);"
java.sql.Connection connection = ...;
Statement statement = connection.createStatement();
statement.executeUpdate(sqlQuery);
statement.close();

并且这两个(所有)语句都已执行。当我尝试在Spring JdbcTemplate中执行相同的操作时,虽然仅执行第一条语句!

String sqlQuery = "CREATE TABLE A (...); CREATE TABLE B (...);"
org.springframework.jdbc.core.JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
jdbcTemplate.execute(sqlQuery);

有没有一种方法可以执行多个语句?在进行谷歌搜索时,我发现只有“ ;手动拆分sqlQuery”之类的解决方案当然是没有用的(它需要更多的解析)。


阅读 883

收藏
2020-12-03

共1个答案

一尘不染

也许Spring的ScriptUtils在您的情况下会很有用。特别是executeSqlScript方法。

请注意,DEFAULT_STATEMENT_SEPARATOR其默认值为';'(请参见常量字段值

2020-12-03