Java 中如何使用 SQL 查询 TXT

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

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

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

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

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

...

期望的结果:

 

 

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

 

A

1

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用 Java 的 JDBC API 和文件操作 API 来实现查询 SQL 并导出多个 txt 文件,具体步骤如下: 1. 创建一个 Connection 对象,连接到数据库。 2. 创建一个 Statement 对象,用于执行 SQL 语句。 3. 执行 SQL 语句,将查询结果保存到 ResultSet 对象。 4. 遍历 ResultSet 对象,依次将每条记录的某个字段的值作为 txt 文件的内容,写入到一个新的 txt 文件。 具体代码如下: ```java import java.io.*; import java.sql.*; import java.util.*; public class ExportMultipleTxt { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/test"; String user = "root"; String password = "123456"; String sql = "SELECT id, name, age FROM users"; String field = "name"; String outputDir = "output"; try (Connection connection = DriverManager.getConnection(url, user, password); Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery(sql)) { List<String> txtContentList = new ArrayList<>(); while (resultSet.next()) { String content = resultSet.getString(field); txtContentList.add(content); } for (int i = 0; i < txtContentList.size(); i++) { String fileName = outputDir + File.separator + "file" + i + ".txt"; String content = txtContentList.get(i); try (BufferedWriter writer = new BufferedWriter(new FileWriter(fileName))) { writer.write(content); } catch (IOException e) { e.printStackTrace(); } } } catch (SQLException e) { e.printStackTrace(); } } } ``` 上述代码,我们首先创建了一个 Connection 对象,连接到数据库。然后创建一个 Statement 对象,用于执行 SQL 语句。在执行 SQL 语句时,将查询结果保存到 ResultSet 对象。接着遍历 ResultSet 对象,依次将每条记录的某个字段的值作为 txt 文件的内容,保存到一个 List 。最后使用 for 循环遍历该 List,依次将每个字符串写入到一个新的 txt 文件。在写入文件时,我们使用Java 的 try-with-resources 语句,以确保文件流正确关闭。最后运行该程序,即可在指定的输出目录生成多个 txt 文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值