我有一个 Filename.sql(Mysql Script)
文件,其中包含多个SQL语句。我使用MyBatis作为持久性框架,使用MySQL作为数据库。我想在Java程序中执行Filename.sql
文件。
注意:我不想将查询作为单独的SQL语句执行。
此操作相当于MySQL命令提示符中的source Filename.sql
。
答案 0 :(得分:2)
您可以使用org.apache.ibatis.jdbc.ScriptRunner执行此操作:
ScriptRunner runner = new ScriptRunner(dataSource.getConnection());
runner.setAutoCommit(true);
runner.setStopOnError(true);
runner.runScript(getResourceAsReader("Filename.sql"));
runner.closeConnection();
答案 1 :(得分:-1)
我认为你应该尝试使用像liquibase或类似的东西。在这种情况下,您需要将.sql-script转换为liquibase脚本。然后你可以用Maven插件或者只用Java来执行它。
答案 2 :(得分:-1)
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();
}
}