当前位置: 首页 > news >正文

java jdbc执行Oracle sql文件

执行代码


import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.sql.Connection;
import java.sql.DriverManager;import org.apache.ibatis.jdbc.ScriptRunner;public class ExecSqlFileController {public static void execSqlFileByMysql(String sqlFilePath) throws Exception {// Oracle数据库的JDBC URL,用户名和密码String url = "jdbc:oracle:thin:@xxx.xxxx.xxx.xxx:15211:orclgbk";String username = "xxxx";String password = "xxxx";Exception error = null;Connection conn = null;try {// 加载Oracle JDBC驱动程序Class.forName("oracle.jdbc.driver.OracleDriver");// 建立连接conn = DriverManager.getConnection(url, username, password);//          设置不自动提交conn.setAutoCommit(false);ScriptRunner runner = new ScriptRunner(conn);
//          设置不自动提交runner.setAutoCommit(false);/** setStopOnError参数作用:遇见错误是否停止;* (1)false,遇见错误不会停止,会继续执行,会打印异常信息,并不会抛出异常,当前方法无法捕捉异常无法进行回滚操作,无法保证在一个事务内执行;* (2)true,遇见错误会停止执行,打印并抛出异常,捕捉异常,并进行回滚,保证在一个事务内执行;*/runner.setStopOnError(true);/** 按照那种方式执行* 方式一:true则获取整个脚本并执行;* 方式二:false则按照自定义的分隔符每行执行;*/runner.setSendFullScript(false);//          定义命令间的分隔符runner.setDelimiter(";");runner.setFullLineDelimiter(false);//          设置是否输出日志,null不输出日志,不设置自动将日志输出到控制台runner.setLogWriter(null);//          如果又多个sql文件,可以写多个runner.runScript(xxx),runner.runScript(new InputStreamReader(new FileInputStream(sqlFilePath), StandardCharsets.UTF_8));conn.commit();} catch (Exception e) {assert conn != null;conn.rollback();error = e;} finally {close(conn);}if (error != null) {throw error;}}private static void close(Connection conn) {try {if (conn != null) {conn.close();}} catch (Exception e) {if (conn != null) {conn = null;}}}public static void main(String[] args) {try {execSqlFileByMysql("C:\\Users\\zhou\\Desktop\\test.sql");} catch (Exception e) {e.printStackTrace();}}
}
http://www.dtcms.com/a/205723.html

相关文章:

  • Centos系统资源镜像配置
  • 批量处理合并拆分pdf功能 OCR 准确率高 免费开源
  • Intel oneMKL 入门
  • 手机打电话时由对方DTMF响应切换多级IVR语音菜单(完结)
  • 基于deepseek 以及豆包工具+nodejs 搭建A I自动化客服系统
  • 【brpc】安装与使用
  • MySQL初阶:JDBC
  • WPF读取json文件,用到combox控件
  • 03_基础篇-NumPy(下):深度学习中的常用操作
  • 计算机三级数据库免费题库
  • Docker 挂载策略:何时使用临时容器拷贝默认配置,何时直接挂载?
  • 用Python和Backtrader库实现均值回归策略解析
  • 密码学标准(Cryptography Standards)介绍
  • 动态规划(七)——子数组系列(求和问题)
  • Vue 3 官方 Hooks 的用法与实现原理
  • [Git] 基本操作及用户配置
  • 六、插曲:项目范围管理
  • 新能源汽车核心元器件深度解析
  • NV039NV044美光闪存颗粒NV047NV053
  • 线性代数:AI大模型的数学基石
  • XC3588H搭载国产麒麟系统可用于政务/社保一体机吗?
  • 软考中级软件设计师——设计模式篇
  • 高等数学-连续
  • 深度解析Pytest中Fixture机制与实战案例
  • 第四十五节:目标检测与跟踪-Meanshift/Camshift 算法
  • tasklet上下文内存分配触发might_alloc检查及同步回收调用链
  • iOS 直播弹幕功能的实现
  • 小白刷题 之 如何高效计算二进制数组中最大连续 1 的个数
  • 【Java Web】1.Maven
  • OpenAI 推出 Codex —— ChatGPT 内的“软件工程智能体”