Java 中如何使用 SQL 查询 TXT


关键词导读:txt Java计算txt SQL查询txt

Java不能直接使用SQL查询文本,一般常规做法:在数据库创建临时表,Java解析文本入库,再使用SQL对其查询、过滤、分组等。

但实现过程太麻烦了。主要不方便体现在:

1Java代码写起来很长,开发环境配置也复杂,一般对人员要求较高。

2、为了获得SQL的便利性,安装数据库、创建临时表,虽然不难,却很繁琐。

3、一些临时性、突发性需求,搞起来周期长,甚至某些场景下不允许安装数据库,就很尴尬,全部用Java写,难度大。

比如要处理这么个场景:查询1996-07-23后且单笔金额大于10000的订单,部分源数据如下:

O_ORDERKEY       O_CUSTKEY        O_ORDERDATE        O_TOTALPRICE

10262   RATTC   1996-07-22       14487.0

10263   ERNSH   1996-07-23       43818.0

10264   FOLKO   2007-07-24       1101.0

10265   BLONP   1996-07-25       5528.0

10266   WARTH   1996-07-26       7719.0

10267   FRANK   1996-07-29       20858.0

10268   GROSR   1996-07-30       19887.0

10269   WHITC   1996-07-31       456.0

10270   WARTH   1996-08-01       13654.0

...

期望的结果:

Java解析入库的部分代码大概要写成这样:

...

String sql = "insert tableName values(?,?,?,?)";

PreparedStatement pstmt = conn.prepareStatement(sql);

BufferedReader br = new BufferedReader(new FileReader(inputFile));

String line = null;

while((line=br.readLine())!=null){

        String[] str = line.split("\t");

        ...

        int num = pstmt.executeUpdate();

        }

...

 

如果有集算器就简单多了,它对文件(txtExcel等)直接提供了SQL式查询与计算的能力,让程序员享受绝对的便利,不再考虑这些烦心的事。比如上面问题,1行就搞定了:

 

A

1

$()select * from /workspace/orders.txt where O_ORDERDATE>=date('1996-07-23') and O_TOTALPRICE >10000

其实还有很多情况用Java计算文本、Excel不太方便,甚至关联计算、入库等需求,但用集算器SPL却很简单,感兴趣可以参考:

在数据文件上轻松使用SQL

结构化文本计算示例(一)

结构化文本计算示例(二)

集算器还很容易嵌入到Java应用程序中,Java如何调用SPL脚本有使用和获得它的方法。

关于集算器安装使用、获得免费授权和相关技术资料,可以参见如何使用集算器

以下是广告时间

对润乾产品感兴趣的小伙伴,一定要知道软件还能这样卖哟性价比还不过瘾? 欢迎加入好多乾计划。
这里可以低价购买软件产品,让已经亲民的价格更加便宜!
这里可以销售产品获取佣金,赚满钱包成为土豪不再是梦!
这里还可以推荐分享抢红包,每次都是好几块钱的巨款哟!
来吧,现在就加入,拿起手机扫码,开始乾包之旅



嗯,还不太了解好多乾?
猛戳这里
玩转好多乾