![](/img/trans.png)
[英]How to execute SQL file from CMD prompt using Java ProcessBuilder
[英]Execute Filename.sql file in Java using MyBatis
我有一个包含多个 SQL 语句的Filename.sql(Mysql Script)
文件。 我使用 MyBatis 作为持久性框架,使用 MySQL 作为数据库。 我想在 Java 程序中执行Filename.sql
文件。
注意:我不想将查询作为单独的 SQL 语句执行。
此操作相当于 MySQL 命令提示符中的source Filename.sql
。
你可以使用 org.apache.ibatis.jdbc.ScriptRunner 来做到这一点:
ScriptRunner runner = new ScriptRunner(dataSource.getConnection());
runner.setAutoCommit(true);
runner.setStopOnError(true);
runner.runScript(getResourceAsReader("Filename.sql"));
runner.closeConnection();
private void runMysqlScript(String sqlScriptFilePath) {
try {
// Create MySQL Connection
Class.forName(driverClassName);
Connection connection =
DriverManager.getConnection(jdbcURL, jdbcUsername, jdbcPassword);
// Initialize object for ScriptRunner
ScriptRunner runner = new ScriptRunner(connection);
// Give the input file to Reader
Reader br = new BufferedReader(new FileReader(sqlScriptFilePath));
// Execute script
runner.runScript(br);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
作为替代方案,您可以尝试使用 liquibase 或类似的东西,这为您提供了一种健康的脚本版本控制方式。 在这种情况下,您需要将 .sql 脚本转换为 liquibase 脚本。 然后您可以使用 Maven 插件或仅从 Java 执行它。 它允许您控制数据的状态。 否则,对于 DML 和 DQL 类型的查询,您可以使用 ScriptRunner 方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.