java sql文件 分割_java执行sql脚本
java执行sql脚本使用工具:ibatis(目前以集成在MyBatis3.0.1或更高版本中部分3.x.x版本已移除ibatis,本文使用MyBatis3.0.1MyBatis2.5.x同样集成ibatis,但无法使用支持JDK版本:1.5及以上import org.apache.ibatis.jdbc.ScriptRunner;//执行mysql数据库脚本示例@Testpublic void
java执行sql脚本
使用工具:ibatis(目前以集成在MyBatis3.0.1或更高版本中部分3.x.x版本已移除ibatis,本文使用MyBatis3.0.1MyBatis2.5.x同样集成ibatis,但无法使用
支持JDK版本:1.5及以上
import org.apache.ibatis.jdbc.ScriptRunner;
//执行mysql数据库脚本示例
@Test
public void mulitSqlForIbatisOnMySql() {
try {
//执行日志文件配置
BufferedWriter log = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File("src/account/mysql/log.txt")), "UTF-8"));
//执行sql语句报错时文件配置
BufferedWriter error = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File("src/account/mysql/error.txt")), "UTF-8"));
Class.forName("com.mysql.jdbc.Driver").newInstance();
//获取数据源
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&reConnect=true;","root", "19821982");
//创建脚本执行对象
ScriptRunner r = new ScriptRunner(conn);
//设置日志输出流,将执行日志保存至流中,每次将会覆写
r.setErrorLogWriter(new PrintWriter(error));
//设置错误信息输出,将错误日志保存至流中,每次将会覆写,如果sql脚本无错误运行成功,则该文件内容为空
r.setLogWriter(new PrintWriter(log));
//执行sql脚本,默认位置为classpath,也就是与src文件夹同级
r.runScript(new BufferedReader(new InputStreamReader(new FileInputStream(new File("src/account/newAccount_mysql.sql")), "UTF-8")));
} catch (Exception e) {
e.printStackTrace();
} finally {
if(null != conn)
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
if(null != log)
try {
log.close();
} catch (IOException e) {
e.printStackTrace();
}
if(null != error)
try {
error.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
注意:在sql脚本中,每条语句使用",“分割,否则将引发异常;一般使用数据库工具,例如navicat将sqlserver表导出为sql时,可能每行语句使用GO批处理语句结束,则如果需要使用ScriptRunner对象执行sql脚本,则需要手动将GO批处理语句替换为”,"
其他可执行sql脚本的工具:flyway、ant(可自行百度,推荐使用ibatis,简单、易操作)
以下附上mybatis下载链接:
标签:脚本,error,java,log,sql,mysql,new
来源: https://blog.csdn.net/HyEISN/article/details/112719639
更多推荐
所有评论(0)