java sql脚本_java执行sql脚本
package com.unmi.db;
import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* 读取 SQL 脚本并执行
*
@author Unmi
*/
public class SqlFileExecutor {
/**
* 读取 SQL 文件,获取 SQL 语句
* @param sqlFile SQL 脚本文件
*
@return List 返回所有 SQL 语句的 List
*
@throws Exception
*/
private List loadSql(String sqlFile) throws Exception {
List sqlList = new ArrayList();
try {
InputStream sqlFileIn = new FileInputStream(sqlFile);
StringBuffer sqlSb = new StringBuffer();
byte[] buff = new byte[1024];
int byteRead = 0;
while ((byteRead = sqlFileIn.read(buff)) != -1) {
sqlSb.append(new String(buff, 0, byteRead));
}
// Windows 下换行是 \r\n, Linux 下是 \n
String[] sqlArr = sqlSb.toString().split("(;\\s*\\r\\n)|(;\\s*\\n)");
for (int i = 0; i < sqlArr.length; i++) {
String sql = sqlArr[i].replaceAll("--.*", "").trim();
if (!sql.equals("")) {
sqlList.add(sql);
}
}
return sqlList;
} catch (Exception ex) {
throw new Exception(ex.getMessage());
}
}
/**
* 传入连接来执行 SQL 脚本文件,这样可与其外的数据库操作同处一个事物中
* @param conn 传入数据库连接
* @param sqlFile SQL 脚本文件
*
@throws Exception
*/
public void execute(Connection conn, String sqlFile) throws Exception {
Statement stmt = null;
List sqlList = loadSql(sqlFile);
stmt = conn.createStatement();
for (String sql : sqlList) {
stmt.addBatch(sql);
}
int[] rows = stmt.executeBatch();
System.out.println("Row count:" + Arrays.toString(rows));
}
/**
* 自建连接,独立事物中执行 SQL 文件
* @param sqlFile SQL 脚本文件
*
@throws Exception
*/
public void execute(String sqlFile) throws Exception {
Connection conn = DBCenter.getConnection();
Statement stmt = null;
List sqlList = loadSql(sqlFile);
try {
conn.setAutoCommit(false);
stmt = conn.createStatement();
for (String sql : sqlList) {
stmt.addBatch(sql);
}
int[] rows = stmt.executeBatch();
System.out.println("Row count:" + Arrays.toString(rows));
DBCenter.commit(conn);
} catch (Exception ex) {
DBCenter.rollback(conn);
throw ex;
} finally {
DBCenter.close(null, stmt, conn);
}
}
public static void main(String[] args) throws Exception {
List sqlList = new SqlFileExecutor().loadSql(args[0]);
System.out.println("size:" + sqlList.size());
for (String sql : sqlList) {
System.out.println(sql);
}
}
}
java sql脚本_java执行sql脚本相关推荐
- java sql脚本_Java 执行 SQL 脚本文件
是拷贝的别人的,以备学习 package com.unmi.db; import java.io.FileInputStream; import java.io.InputStream; import ...
- java 查询sql语句_java执行SQL语句实现查询的通用方法详解
完成sql查询 并将查询结果放入vector容器,以便其他程序使用 /* * 执行sql查询语句 */ public static vector executequery(class clazz, s ...
- java调用shell脚本_Java 执行Shell脚本指令
一.介绍 有时候我们在Linux中运行Java程序时,需要调用一些Shell命令和脚本.而Runtime.getRuntime().exec()方法给我们提供了这个功能,而且Runtime.getRu ...
- Java 使用execute方法执行Sql语句
Java 使用execute方法执行Sql语句. mysql.ini是一个配置文件.配置内容可以看上一篇. class ExecuteSql { private String driver; ...
- sql无效字符 执行sql语句报错解决方案
sql无效字符 执行sql语句报错解决方案 参考文章: (1)sql无效字符 执行sql语句报错解决方案 (2)https://www.cnblogs.com/feifeicui/p/8907851. ...
- java调用MySQL脚本_Java调用SQL脚本执行常用的方法示例
前言 大家都知道,在Java中调用SQL脚本的方式有多种,在这里只记录一种自己常用的方式,个人觉得挺实用方便的. 运用ScriptRunner这个类. ScriptRunner类用于执行SQL语句,例 ...
- Java使用数据库命令执行sql脚本(Windows版)
传统使用Java ScrptRunner类执行sql脚本时会有很多语法限制,程序只能最简单的sql语句,该功能并不适用于实际应用场景:因此可以改变思路,使用Java直接执行Dos命令的 ...
- java直接调用并执行sql脚本
1.背景:项目本身功能简单,不想使用开源框架引入过多不需要的依赖,避免程序部署时,人工忘记执行sql脚本文件问题 2.此demo为使用mybatis中脚本执行工具类org.apache.ibatis. ...
- beeline执行sql语句_beeline执行sql脚本交易
beeline执行sql脚本交易 发布时间:2020-04-20 来源:脚本之家 点击: 用VisualBasic编制这类程序时,由于VB自身没有这种切换功能,因此需要利用第三方控件或调用Window ...
最新文章
- C语言指针总结大学霸IT达人
- Redhat7.4安装Oracle11g详细步骤
- 【小项目关键技术七】MPU6050
- 伯克利计算机科学录取率,Berkeley的CS「加州大学伯克利分校计算机科学系」
- Python lambda函数
- python零基础能学吗-Python编程语言好学吗?零基础转行能学Python吗?
- Apache+Php+Mysql配置
- javascript篇:策略模式验证表单
- 在家如何下载nature中的文献
- 中级软件测试工程师是什么水平,中级软件测试工程师需要满足的基本评定条件...
- openstack rabbitmq报错导致识别不到计算节点 解决方案
- 纯CSS3实现360度旋转特效
- 什么是顶级域名、根域/二级域名、一级域名/子域名
- JavaWeb学习总结(五十一)——邮件的发送与接收原理
- 通过浏览器响应实现excel导出
- MVC框架简易留言板实例
- bedtools指南
- 用Python分析微博股市热度和A股走势的关联
- 嵌入式领域的职业发展方向是什么?
- error LNK2038: 检测到“RuntimeLibrary”的不匹配项 解决方法