java实现sql批量插入参数
2024-08-30 07:59:39
背景:
需要更新一些不规范的时间格式,如将某个时间格式化为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();
}
最新文章
- 给大家推荐一款高大上的代码高亮插件(sublime,github风格)——highlight.js
- 设计模式之美:State(状态)
- [原创]html5游戏_贪吃蛇
- java自带线程池和队列详细讲解
- Long和Date数据类型之间相互转换代码 - 调整时间推前往后,截取long型日期方法。
- 征服 Redis + Jedis + Spring (三)—— 列表操作【转】
- Android Intent 解析之二
- Write the code.Change the world.---WWDC2014
- bzoj 4567: [Scoi2016]背单词
- shell 批量修改较长字符串 字符串内容之间更换位置
- 【阿里云】在 Windows Server 2016 下使用 FileZilla Server 安装搭建 FTP 服务
- laravel整合vue 多入口解决
- CorelDRAW(cdr) 2018安装教程详解
- Fantasy of a Summation LightOJ - 1213 (快速幂)
- [原]Jenkins(十一)---jenkins使用管理员admin创建用户和分配权限
- 简单说明 Virtual DOM 为啥快
- Zookeeper 三台主机 Ha集群的搭建
- 由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值。System.Threading.ThreadAbortException
- swift的异常处理:本质是错误信息的传递方式
- 用C语言进行最基本的socket编程