最近一直做一些数据分析
如:
在一些第三方工具上导出一些csv/xls格式的文件,然后分析里面的内容,做过滤合并或统计等,用groovy习惯了,所以处理些文本还是小菜的,就是要做统计的时候,不用sql真麻烦啊,本来一个group by的,自己用代码写就很蹩脚,如
list.clone().unique{it.id}.each{
int num = list.count{one -> it.id == one.id}
***
}
groovy的db组件很8错的,弄一个内存数据库,可以很容易实现文本和sql结合做数据,就没必要每次都整理文件导入数据库了,而且sql提供的string方法就灵活性而言不如动态语言
代码原语如下
import groovy.sql.Sql
def p = [
url:'jdbc:h2:mem:test',
u:'sa',
p:'',
driver:'org.h2.Driver'
]
def db = Sql.newInstance(p.url, p.u, p.p, p.driver)
try {
db.execute('''
create table temp ();
'''
)
String sql = '''
select a.flag, a.dat, count(1) as num from csvread('test.csv') a
group by dat, flag
'''
db.rows(sql).each{
println it.DAT.padRight(20) + it.FLAG.padRight(10) + it.NUM
}
}finally {
db.close()
}
本文介绍如何使用Groovy结合内存数据库H2处理CSV文件,实现数据的快速过滤、合并及统计等功能。通过示例代码展示了一种不依赖传统数据库导入流程的数据处理方式。
908

被折叠的 条评论
为什么被折叠?



