日志中的SQL语句直接转为可执行的SQL
你上班的时候有遇到过这种情况吗?
我想执行下这个日志中的SQL,需要把参数一个一个复制粘贴到?中,烦死了
于是,我写个小方法,复制粘贴下就能得到可执行的SQL
public static void main(String[] args) {String str = "2025-09-18 17:12:24.087 DEBUG 56008 --- [ XNIO-1 task-11] o.s.MMU.mapper.Tbmmu112Mapper.insert : ==> Preparing: INSERT INTO TBMMU112 ( TBMMU112_ID, tbmmu109_id, company_id, company_name, dw_id, source_app_id, inv_logic_id, inv_logic_name, inv_physic_id, inv_physic_name, inv_bin_id, inv_bin_name, item_id, item_name, inv_unit, withdraw_qty, ori_qty, now_qty, purpose_id, inventory_type, sale_price, data_stus, create_user, create_dept, create_time, update_user, update_time, cre_user, upd_user, type_spec, item_more_desc, storage_date ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )\n" +"2025-09-18 17:12:24.127 DEBUG 56008 --- [ XNIO-1 task-11] o.s.MMU.mapper.Tbmmu112Mapper.insert : ==> Parameters: 2b839f07287c41fdaa39585426b5ab8f(String), 1db56d0098ca470a8b47c5a1210d0705(String), 0640(String), NATSTEEL(String), CK0640250900291(String), MMU112(String), M5(String), M5 Store,22 Tanjong Kling road(Gate 4)(String), SC05(String), Spares & Conumables(String), A3-SC05-AF00Z(String), AF00Z(String), B17-09-01-0012(String), HARDOX 450 BIN 6M(L) X 2M(H) X 2.4M (W)(String), UNI(String), 2.0(BigDecimal), 52(BigDecimal), 50.00(BigDecimal), 52 盘亏(String), N(String), 900(BigDecimal), N(String), 37222(Long), 10000011(Long), 2025-09-18(Date), 37222(Long), 2025-09-18(Date), zt37222_孙德猛(String), zt37222_孙德猛(String), HARDOX 450 BIN 6M(L) X 2M(H) X 2.4M (W)(String), TO SUPPLY OPEN TOP CONTAINER (OTC) C/W: 1) BASE PLATE: 6MM HARDOX 450 PLATE (SINGLE PIECE) 2) SIDE PLATE: 6MM HARDOX 450 PLATE (SINGLE PIECE) 3) REAR SWING DOOR WITH 04 HEAVY DUTY DOOR HINGES 4) REAR DOOR WITH MULTIPLE HOOK MECHANICAL FUNCTIONAL LOCKING SYSTEM 5) 02 HEAVY DUTY REAR ROLLER 6) HEAVY DUTY FRONT BOW (STANDARD HEIGHT 1570MM) 7) CHOICE OF EXTERNAL COLOUR (SINGLE TONE ONLY) 8) SAC INSPECTION CERTIFICATE (1 YEAR ONLY) 9) LENGTH: 6METER (EXTERNAL) 10) HEIGHT2 METER (EXTERNAL) 11) WIDTH:24 METER (EXTERNAL)(String), 2025-09-09 00:00:00.0(Timestamp)";String[] split = str.split("==>");SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");String today = sdf.format(new Date());String sql =split[1].trim().split(today)[0].trim().split(":")[1];String[] params = split[2].split("arameters:")[1].trim().split("\\),");for (int i = 0; i < params.length; i++) {String curRep=params[i].trim();if(curRep.contains("String")){curRep="'"+curRep.split("\\(String")[0].trim()+"'";}if(curRep.contains("Long")){curRep="'"+curRep.split("\\(Long")[0].trim()+"'";}if(curRep.contains("Date")){curRep="TO_DATE\\('"+curRep.split("\\(Date")[0].trim()+"\\', \\'YYYY-MM-DD\\'\\)";}if(curRep.contains("BigDecimal")){curRep="'"+curRep.split("\\(BigDecimal")[0].trim()+"'";}if(curRep.contains("Timestamp")){curRep="TO_TIMESTAMP\\('"+curRep.split("\\(Timestamp")[0].trim()+"\\', \\'SYYYY-MM-DD HH24:MI:SS.FF\\'\\)";}sql = sql.replaceFirst("\\?", curRep);}System.out.println(sql);}
到数据库中试下能不能用
看到> Affected rows: 1 就是执行成功了,
下课