mircode / sql-file

在规格文件上直接执行SQL,无数据库依赖,基于Java8的流计算和Lamdba表达式。

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

文件SQL

一、简介

主要用于日常格式化文本分析,包括分隔符文件,JSON文件,以及分隔符JSON混排文件。项目没有额外Jar包依赖,代码简洁,功能强大。可作为日常分析小工具使用。支持多种形式的数据采集格式,如JSON,分隔符,正则分隔,自定JavaScript分隔,自定Format.class分隔等。

演示

二、代码结构

代码结构

三、目录介绍

目录结构

四、使用说明

测试文件内容如下:

使用说明

五、创建表

## 分隔符
create table log.txt (id,name,ip,segment,num) fmt |;
## JSON格式
create table log.json (id,name,ip,segment,num) fmt json;

创建表

六、更新表

## Java类提取
update table log.txt (id,name,ip,segment,num) fmt format.class;
desc log.txt;
select * from log.txt;

更改表

## JavaScript脚本提取
update table log.txt (id,name,ip,segment,num) fmt format.js;
desc log.txt;
select * from log.txt;

更改表

## 正则提取
update table log.txt (id,name,ip,segment,num) fmt ~(.*?)|(.*?)|(.*?)|(.*?)|(.*);
desc log.txt more;
select * from log.txt;

更改表

七、简单查询

# 简单查询
select name,ip from log.txt;
select name,ip from log.json;
select name,ip from log.{txt,json}; 

简单查询

# JSON提取
select name,json_path(segment,$.service) from log.txt;
select name,json_path(segment,$.service) from log.json;
select name,json_path(segment,$.service) from log.{json,txt};

简单查询

八、条件查询

select * from log.txt  where name='taobao' or name='ctrip';
select * from log.json where name='taobao' or name='ctrip';
select * from log.{txt,json} where name='taobao' or name='ctrip';

条件查询

九、聚合查询

select name,sum(num) as total,avg(num),max(num),min(num),count(num) from log.txt  group by name;
select name,sum(num) as total,avg(num),max(num),min(num),count(num) from log.json group by name;
select name,sum(num) as total,avg(num),max(num),min(num),count(num) from log.{txt,json} group by name;

聚合查询

十、保存结果

select name,ip,num from log.txt into tmp.tb;
select name,ip,num from tmp.tb where name='taobao';

保存结构

十一、删除表

drop table log.txt;
drop table log.json;

About

在规格文件上直接执行SQL,无数据库依赖,基于Java8的流计算和Lamdba表达式。


Languages

Language:Java 97.8%Language:Shell 0.8%Language:Batchfile 0.6%Language:JavaScript 0.6%Language:F# 0.2%