Oracle Sql脚本分割代码

Sql Splitter 介绍

在进行项目自动化部署时,需要自动的执行数据库的初始化脚本,包含结构脚本和初始化数据。

由于历史原因没有使用jpa

内部有使用oracle和使用postgres的项目,postgres通过在执行脚本时自动添加自定义分割符,在用ibatis的ScriptRunner即可完成自动执行,而oracle首先如果select之类的语句末尾有分号则jdbc执行会直接报错。数据库结构语句和数据语句混在一起的话,ScriptRunner就不太好区分了,又不想在容器里面装一个pl/sql客户端用于跑脚本,所以最终就单独写一个解析方法,分割sql脚本。

该方法将一整个Sql脚本分割为由一条条sql语句组成的sql列表,用于给jdbc执行。
datagrip 能直接成功的脚本那么该Splitter分割出来的sql就能按照顺序执行。
如果有分割识别出错的项,希望能提到issue,尽可能将该解析方法做到全面。

欢迎交流以完善该方法

代码github 地址

SqlSplitter

注意事项

  • 现在只有oracle实现,
  • 不支持oracle 的Q'/test/'语法
  • 最后一行必须有结尾符,比如select语句最后必须有分号不能省略

使用

InputSteam inputSteam = "获取Stream方法"
List<String> sqlList = new OracleSqlSplit(inputStream).getSqlList();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值