`
linfrank
  • 浏览: 7342 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Java 执行 SQL 脚本文件

阅读更多
Java 执行 SQL 脚本文件 收藏
是拷贝的别人的,以备学习

view plaincopy to clipboardprint?
01.package com.unmi.db;  
02. 
03.import java.io.FileInputStream;  
04.import java.io.InputStream;  
05.import java.sql.Connection;  
06.import java.sql.Statement;  
07.import java.util.ArrayList;  
08.import java.util.Arrays;  
09.import java.util.List;  
10. 
11./** 
12. * 读取 SQL 脚本并执行 
13. * @author Unmi 
14. */ 
15.public class SqlFileExecutor {  
16. 
17.    /** 
18.     * 读取 SQL 文件,获取 SQL 语句 
19.     * @param sqlFile SQL 脚本文件 
20.     * @return List<sql> 返回所有 SQL 语句的 List 
21.     * @throws Exception 
22.     */ 
23.    private List<String> loadSql(String sqlFile) throws Exception {  
24.        List<String> sqlList = new ArrayList<String>();  
25. 
26.        try {  
27.            InputStream sqlFileIn = new FileInputStream(sqlFile);  
28. 
29.            StringBuffer sqlSb = new StringBuffer();  
30.            byte[] buff = new byte[1024];  
31.            int byteRead = 0;  
32.            while ((byteRead = sqlFileIn.read(buff)) != -1) {  
33.                sqlSb.append(new String(buff, 0, byteRead));  
34.            }  
35. 
36.            // Windows 下换行是 \r\n, Linux 下是 \n  
37.            String[] sqlArr = sqlSb.toString().split("(;\\s*\\r\\n)|(;\\s*\\n)");  
38.            for (int i = 0; i < sqlArr.length; i++) {  
39.                String sql = sqlArr[i].replaceAll("--.*", "").trim();  
40.                if (!sql.equals("")) {  
41.                    sqlList.add(sql);  
42.                }  
43.            }  
44.            return sqlList;  
45.        } catch (Exception ex) {  
46.            throw new Exception(ex.getMessage());  
47.        }  
48.    }   
49. 
50.    /** 
51.     * 传入连接来执行 SQL 脚本文件,这样可与其外的数据库操作同处一个事物中 
52.     * @param conn 传入数据库连接 
53.     * @param sqlFile SQL 脚本文件 
54.     * @throws Exception 
55.     */ 
56.    public void execute(Connection conn, String sqlFile) throws Exception {  
57.        Statement stmt = null;  
58.        List<String> sqlList = loadSql(sqlFile);  
59.        stmt = conn.createStatement();  
60.        for (String sql : sqlList) {  
61.            stmt.addBatch(sql);  
62.        }  
63.        int[] rows = stmt.executeBatch();  
64.        System.out.println("Row count:" + Arrays.toString(rows));  
65.    }  
66. 
67.    /** 
68.     * 自建连接,独立事物中执行 SQL 文件 
69.     * @param sqlFile SQL 脚本文件 
70.     * @throws Exception 
71.     */ 
72.    public void execute(String sqlFile) throws Exception {  
73.        Connection conn = DBCenter.getConnection();  
74.        Statement stmt = null;  
75.        List<String> sqlList = loadSql(sqlFile);  
76.        try {  
77.            conn.setAutoCommit(false);  
78.            stmt = conn.createStatement();  
79.            for (String sql : sqlList) {  
80.                stmt.addBatch(sql);  
81.            }  
82.            int[] rows = stmt.executeBatch();  
83.            System.out.println("Row count:" + Arrays.toString(rows));  
84.            DBCenter.commit(conn);  
85.        } catch (Exception ex) {  
86.            DBCenter.rollback(conn);  
87.            throw ex;  
88.        } finally {  
89.            DBCenter.close(null, stmt, conn);  
90.        }  
91.    }  
92. 
93.    public static void main(String[] args) throws Exception {  
94.        List<String> sqlList = new SqlFileExecutor().loadSql(args[0]);  
95.        System.out.println("size:" + sqlList.size());  
96.        for (String sql : sqlList) {  
97.            System.out.println(sql);  
98.        }  
99.    }  
100.} 



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/hongmin118/archive/2009/09/24/4588941.aspx
分享到:
评论

相关推荐

    Java执行SQL脚本文件到数据库详解

    主要为大家详细介绍了Java执行SQL脚本文件到数据库的相关方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    批量执行sql脚本文件,支持oracle、sql server2005

    批量执行sql脚本的web工程,通过myeclipse导入工程即可,经过测试可以批量导入oracle与sql server2005的脚本,而且是web页面的向导式执行*.sql脚本文件 支持事务,任何执行过程出现异常,均会提示并且回滚操作,页面...

    java定时执行sql语句

    使用jfinal编写的本地应用,压缩文件里包括了eclipse本程序的源代码和可执行的jar文件。 通过配置数据库连接信息和要执行的sql语句,可实现定时执行多个sql语句。 所要执行的语句只能是写死的,可支持sqlserver ...

    Java开发的sql生成器

    java写的sql生成器,可以自动生成sql语句。

    flink-sql-submit-client:执行Flink SQL 文件的客户端

    执行Flink SQL 文件的客户端 Flink 版本:flink 1.11.0 其他版本待测试 是在的基础上修改而来 使用简单方便 需要指定FLINK_HOME 下载上面code中的jar包 修改 sql-submit.sh 脚本中jar包的路径 和指定 FLINK_HOME jar...

    【毕业设计】基于SSH(Struts2+Spring+Hibernate)搭建的失物招领平台(前后端源码+SQL脚本).zip

    【毕业设计】基于SSH(Struts2+...注意:打开根目录里面的sql文件,在数据库软件中建一个lostfound数据库,然后运行sql文件。还有数据库默认用户名root和密码123456,如果需要修改请到src下面修改db.properties文件

    Excel文件转化为SQL语句

    通过Excel文件中的数据,进行转化生成为insert 执行文件 目前开发只是简单应用. 默认 只实现第一个sheet工作表进行生成文件.第一行为表列名,数据由第二行开始. sheet工作表名为表名处理. 技术交流可以QQ:332795521

    毕业设计基于SSM/Springboot的商城项目java源码+SQL脚本

    运行环境 Linux/Windows 毕业设计基于SSM/Springboot的商城项目,一个简单的商城,界面友好,但是不是很漂亮。实现了商城所有基本功能。 作为改写的基础模板,可以增加或者改写的功能: [已实现] 增加word和excel...

    SQLSERVER(可修改IP和端口port)和ORACLE生成批量执行脚本的方法【多个文件批量处理】SqlFileTest.java

    SQLSERVER(可修改IP和端口port)和ORACLE生成批量执行...sql版本把控制台的内容复制出来,粘贴到bat文件中,单击执行就ok oracle版本把控制台生成的脚本在,plsql中用新建个“命令窗口”,把控制台的脚本粘贴执行就ok

    java源码包---java 源码 大量 实例

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    使用SQL SERVER+Swing实现宾馆管理系统

    宾馆管理系统,这是我数据库课程的课程设计,数据库使用的是SQL Server,界面用JAVA ...内含SQL脚本文件、Java源代码、可执行文件和使用说明文档等。 同做课设有需求的可以参考下。完成得比较粗糙,求轻喷( *⊙~⊙)。

    JAVA上百实例源码以及开源项目

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    java源码包4

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码...

    人才中心简历管理系统(可运行的war文件和mySQL脚本)

    人才中心简历系统,主要是针对人才中心的简历管理开发的比较简单的建立管理系统。 主要是应聘者进行简历填写,工作人员进行简历的管理 可运行的war文件,还有sql脚本文件。

    java源码包3

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码...

    课程设计SSM+MySql+jsp航班预订系统+SQL脚本

    航班预订系统 软件开发课程设计 png为项目运行的截图 开发环境 Java --&gt; SSM + Jsp + MySql SQL文件 航班表 flight.sql 用户表 user.sql 订单表 orders.sql 功能如下 登录 and 注册 查询 and 预订 订单显示

    基于JavaSwing与Mysql的在线考试系统源码+运行说明+sql数据库.zip

    2、在你的数据库中运行t_exam.sql脚本文件,并修改mybatis.xml中的数据库信息 管理员账号、密码: 1000 admin 普通用户账号、密码: 1026 123456 【备注】 1.项目代码均经过功能验证ok,确保稳定可靠运行。欢迎下载...

    java源码包2

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码...

    JAVA上百实例源码以及开源项目源代码

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    基于Java web的网上书店管理系统(源码+数据库).zip

    2、在MySQL中创建数据库,使用MySQL Control Center执行database目录下的dbscript.sql数据库脚本文件创建数据库SQL语句创建数据库和表及数据; 3、设置数据库连接配置,修改WebRoot\WEB-INF的jdbc.properties文件,...

Global site tag (gtag.js) - Google Analytics