java实现sql批量插入参数
2023-09-11 14:21:40 时间
背景:
需要更新一些不规范的时间格式,如将某个时间格式化为yy-MM-dd,实际上为 yy-MM-dd hh:mm:ss,并且需要提供回滚脚本。
例如:规范化时间的脚本如下:
update test set test_date=substring(account_date,1,10) WHERE test_date>'2017-06-01 00:00:00' AND test_date<'2017-09-07 00:00:00'
这个脚本是ok,但执行时受到影响的行数如果有几百条甚至上千条记录的话,回滚脚本怎么写呢?
模板如下:
update test set test_date= '' where id='';
1.首先,从test表中查出上述的参数:
select id,test_date from test where test_date>'2017-06-01 00:00:00' AND test_date<'2017-09-07 00:00:00'
将结果导入到文本中,名为为param.txt
2.然后运行以下java程序,打印出可执行的回滚脚本
private void insertData() throws IOException{ FileReader reader = new FileReader("D:\\document\\load\\data1.txt"); BufferedReader br = new BufferedReader(reader); String updateSql="update test set test_date= '' where id='';"; String line = null; Integer count=0; String[] param=new String[2]; String regexp = "\'\'"; while((line = br.readLine()) != null) { param=line.split("\\\t"); String first=updateSql.replaceFirst(regexp,"\'"+param[1]+"\'"); String second=first.replaceFirst(regexp,"\'"+param[0]+"\'"); System.out.println(second); count++; } br.close(); reader.close(); }
3.如果行数较多,需要打印到文件中(Console打印的记录数受限的)
private void insertData() throws IOException{ FileReader reader = new FileReader("D:\\document\\load\\data1.txt"); BufferedReader br = new BufferedReader(reader); StringBuffer sbf=new StringBuffer(); String updateSql="update test set test_date= '' where id='';"; String line = null; Integer count=0; String[] param=new String[2]; String regexp = "\'\'"; while((line = br.readLine()) != null) { param=line.split("\\\t"); String first=updateSql.replaceFirst(regexp,"\'"+param[1]+"\'"); String second=first.replaceFirst(regexp,"\'"+param[0]+"\'"); //System.out.println(second); sbf.append(second).append("\n"); count++; } writeFile("D:\\document\\load\\rollback.sql", sbf); br.close(); reader.close(); } public void writeFile(String fileName,StringBuffer stf) throws IOException { BufferedWriter writer = new BufferedWriter(new FileWriter(fileName)); writer.write(stf.toString()); writer.close(); }
相关文章
- asp.net RSA密钥之C#格式与Java格式转换(PEM格式)
- sql 批量修改,Update Select 嵌套更新或批量更新一句SQL语句搞定,
- 大杂烩 -- Java内存布局【图】以及java各种存储区【详解】
- java程序编译
- Java之Retry重试机制详解
- Java Interface 接口
- 最新秋招,Java八股文!含答案,JAVA核心知识点最详细版(面试必备)
- 解决bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: ORA-00911: 无效字符
- HBase学习笔记——Java API操作
- 第七节:详细讲解Java中的日期,java.util.date
- 《Java和Android开发学习指南(第2版)》—— 2.9 注释
- 《Java编码指南:编写安全可靠程序的75条建议》—— 指南4:确保安全敏感方法被调用时参数经过验证
- 1. java.util.concurrent - Java 并发工具包
- JAVA好书之《深入理解Java虚拟机》
- Error running 'dt-assets-monitor [clean]': Cannot run program "C:Program Files (x86)Javajdk1.8.0_73binjava.exe" (in directory "E:codedt-assets-monitor")
- Java学习-084-java.sql.SQLException: Zero date value prohibited 问题解决
- 利用Java实现电子邮件的批量发送
- Java异常发生时程序的执行顺序
- java.lang.NumberFormatException
- 多种方式解决Java控制台报错 java.util.LinkedHashMap cannot be cast to.....
- Java 中如何批量删除 Redis 的数据?超详细,无套路
- java项目异常监控_JAVA项目中的常用的异常处理情况总结
- 【Java I/O 流】文件的操作——java.io.File 类详解