groovy 小应用

昨天使用groovy脚本生成大量的sql,实在是爽!
现在把经验贴上,以后可以继续使用。

首先说下我的需求:
给了一个excel,然后要我提取其中的单元格数据,设置到sql语句中,比如是一条更新语句,

[b]update Table set max_value=?,min_value=? where chart_field='?';[/b]
其中 =号后面的? 就是要从excel中提取的数据。 现在给定excel中某行的数据:

[color=blue] chart_field description max_value xx xx min_value[/color]
HK4_ALLOW_UPSPWR_KVA xxxx 50000 NA NA 0

给定了6列的数据,而我要取的就是 1,3,6各列的数据,替代=号后面的?,如果数据量非常庞大,这个时候要程序来控制比你手工的效率就大多了,快捷,爽!

看代码:文件名为xxx.groovy


import jxl.*;

Workbook workbook = Workbook.getWorkbook(new File("field_to_have_max_min.xls")); //导入同级目录下的excel文档,注意后缀貌似暂时只能是.xls

println 'found sheets in workbook: '
workbook.sheetNames.each{print "\t ${it}"}
println ''


handlePoint(workbook)

def handlePoint(workbook){ //主体方法
def sheet = workbook.getSheet('field_to_have_max_min'); //field_to_have_max_min 为sheet的名字

def rows = sheet.getRows();
def cols = sheet.getColumns();

println "rows: ${rows}, cols: ${cols}"

def file = new File('field_to_have_max_min.sql') //创建导出文件
file.delete()

for(row in 2..<rows){
def chart_field = sheet.getCell(0,row).getContents()
def max = sheet.getCell(2,row).getContents()
def min = sheet.getCell(5,row).getContents()
if (max=='NA') max = 'null'
if (min=='NA') min = 'null'
def sql = "update dashboard_data_def set max_value=${max},min_value=${min} where chart_field='${chart_field}';"
file << "${sql}\r\n" //导出sql到导出文件

if (chart_field=='HK4_INSTALL_UPSPWR_Z4C_KVA')
break;
}
}





这个就可以实现上面的需求了。

要运行这么一个文件,你得下载groovy并安装,我安装的是groovy-binary-1.8.1.zip中的,解压到本地就ok了,然后在环境变量中建一个叫GROOVY_HOME的系统变量,指定groovy的解压目录,然后在path系统变量中添加%GROOVY_HOME%\bin 到其中,当然别忘了;,然后在命令行就可以查看安装成功了没,比如敲入groovy -version 就可以查看版本了。

要运行前面的文件xxx.groovy, 在命令行进入该文件所在目录,敲入 groovy xxx.groovy 就可以运行了 ,可以在xxx.groovy 文件所在目录看到生成的.sql文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值