java解析sql文件
- package com.athena.ckx.util;
- 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 kong
- *
- */
- public final class SqlFileExecutor {
- public static void main(String[] args) {
- try {
- List<String> sqlList = loadSql("src/test/resources/config/script.sql");
- System.out.println("size:" + sqlList.size());
- for (String sql : sqlList) {
- System.out.println(sql);
- }
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- /**
- * 读取 SQL 文件,获取 SQL 语句
- * @param sqlFile
- * SQL 脚本文件
- * @return List<sql> 返回所有 SQL 语句的 List
- * @throws Exception
- */
- private static List<String> loadSql(String sqlFile) throws Exception {
- List<String> sqlList = new ArrayList<String>();
- 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 脚本文件 可选参数,为空字符串或为null时 默认路径为 src/test/resources/config/script.sql
- * @throws Exception
- */
- public static void execute(Connection conn,String sqlFile) throws Exception {
- Statement stmt = null;
- if(sqlFile==null||"".equals(sqlFile)){
- sqlFile="src/test/resources/config/script.sql";
- }
- List<String> 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));
- }
- }
java解析sql文件的更多相关文章
- atitit.java解析sql语言解析器解释器的实现
atitit.java解析sql语言解析器解释器的实现 1. 解析sql的本质:实现一个4gl dsl编程语言的编译器 1 2. 解析sql的主要的流程,词法分析,而后进行语法分析,语义分析,构建sq ...
- java解析xml文件并输出
使用java解析xml文件,通过dom4j,代码运行前需先导入dom4j架包. ParseXml类代码如下: import java.io.File; import java.util.ArrayLi ...
- 使用Java解析XML文件或XML字符串的例子
转: 使用Java解析XML文件或XML字符串的例子 2017年09月16日 11:36:18 inter_peng 阅读数:4561 标签: JavaXML-Parserdom4j 更多 个人分类: ...
- Java解析JSON文件的方法
http://blog.sina.com.cn/s/blog_628cc2b70101dydc.html java读取文件的方法 http://www.cnblogs.com/lovebread/ar ...
- Java解析xml文件遇到特殊符号&会出现异常的解决方案
文/朱季谦 在一次Java解析xml文件的开发过程中,使用SAX解析时,出现了这样一个异常信息: Error on line 60 of document : 对实体 "xxx" ...
- java解析XML文件
dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个非常非常优秀的Java XML API,具有性能优异.功能强大和极端易用使用的特点,同时它也是一个开放源 ...
- java解析properties文件
在自动化测试过程中,经常会有一些公用的属性要配置,以便后面给脚本使用,我们可以选择xml, excel或者json格式来存贮这些数据,但其实java本身就提供了properties类来处理proper ...
- JAVA解析XML文件(DOM,SAX,JDOM,DOM4j附代码实现)
1.解析XML主要有四种方式 1.DOM方式解析XML(与平台无关,JAVA提供,一次性加载XML文件内容,形成树结构,不适用于大文件) 2.SAX方式解析XML(基于事件驱动,逐条解析,适用于只处理 ...
- Java解析XML文件的方式
在项目里,我们往往会把一些配置信息放到xml文件里,或者各部门间会通过xml文件来交换业务数据,所以有时候我们会遇到“解析xml文件”的需求.一般来讲,有基于DOM树和SAX的两种解析xml文件的方式 ...
随机推荐
- 获取DataGridView上选中的一行并转换为一个DataRow类型
ataGridViewRow gridrow = dataGridView1.SelectedRows[0]; DataRowView row_view = (DataRowView)gridrow. ...
- 使用ant时 出现 java.lang.OutOfMemoryErro r: Java heap space的解决办法
在Linux的shell中,使用export设置ANT_OPTS变量,值为1G export ANT_OPTS=-Xmx1g ant 同理在windows的cmd中,使用set设置ANT_OPTS变量 ...
- 检测到"_ITERATOR_DEBUG_LEVEL"的不匹配项
error: vtkCommon.lib(vtkSmartPointerBase.obj) : error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项:值“0”不 ...
- HDU 3499【最短路】
题意: 给你一幅图,然后起点终点,然后有一个条件是可以使某条边的花费减半,求最短路的最小花费. 思路: (来自大哥) 最短路的时候多一维,途中是否有花费减半的边: 然后转移,如果上一条有减半的,这一条 ...
- Unity(2) 脚本简单操作
生命周期(按顺序排列) Awake():脚本唤醒,系统执行的第一个方法,在脚本声明周期内只执行一次,初始化一般可以在这里 Start():Awake之后,Update之前,只执行一次,一般在awake ...
- Unity Prefabs
通过上一期的学习,我们知道为了如何向场景中添加一个物体.问题来了,如果需要对这个立方体进行修改应该怎么做呢?那我们肯定就得修改这段代码,能不能将立方体本身从我们的开发中单独提出来呢?这就涉及到我们今天 ...
- [Xcode 实际操作]八、网络与多线程-(18)PerformSelector消息处理方法:由运行时系统,负责去调用对象的指定方法
目录:[Swift]Xcode实际操作 本文将演示PerformSelector消息处理方法. 在项目文件夹上点击鼠标右键弹出文件菜单. [New File]->[Swift File]-> ...
- 笔记-JavaWeb学习之旅8
Window对象-定时器方法 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...
- C 语言实例 - 计算字符串长度
C 语言实例 - 计算字符串长度 C 语言实例 C 语言实例 计算字符串长度. 实例 - 使用 strlen() #include <stdio.h> #include <strin ...
- 分布式通信-tcp/ip socket
Socket通讯的过程 Server端Listen(监听)某个端口是否有连接请求,Client端向Server 端发出Connect(连接)请求,Server端向Client端发回Accept(接受) ...