生活中,你我一定都看到过这种「xx元爆改出租屋」,「爆改小汽车」之类的文章,做为IT人,折腾的劲头一点也不差。 软件开发过程中,你是否有时候,会拿着业务提供的一个个CSV或者JSON的数据文件,写个解析程序,把它们存到数据库里,再在自己的程序里通过数据库读出来? 其实不用这么麻烦,还绕了一个大圈。 今天,我们一起来「爆改」JSON/CSV这类文件,把它们打造成 MySQL一样的关系型数据库,一套SQL查询走天下。:-) 第一步:代码里加入Maven依赖 <dependency> <groupId>org.apache.calcite</groupId> <artifactId>calcite-file</artifactId> <version>1.21.0</version> </dependency> 通过这一步,你大概就看出来,咱们今天的爆改,主要依赖 Calcite,这个Apache的顶级项目。 简单介绍的话,它是个数据库查询和优化的引擎,不负责具体的存储。 所以介绍里人家自己也说了,是你高性能数据库的地基。许多的开源项目是基于它做的,比如大名鼎鼎的这些: 第二步:添加配置文件 配置的JSON 文件,一般是下面这样子: 改造的配置文 站长交易 件,就像行军打仗的地图一样,来告诉我们往哪走,这里的配置文件,对应到关系型数据库里,就像是哪个库,哪些表一样。 { "version": "1.0", "defaultSchema": "SALES", "schemas": [ { "name": "SALES", "type": "custom", "factory": "org.apache.calcite.adapter.file.FileSchemaFactory", "operand": { "directory": "sales" } } ]} 其中schemas 表示都有哪些数据库, defaultSchema 当然是默认数据库了。factory 表示当前的数据文件,我们使用哪种Schema的形式进行解析。因为 Calcite 可以支持多种数据格式,通过这个图你也能感受到几分吧。 第三步:JDBC Style 通过 JDBC 的形式就能连接到我们自己的数据库查询了。代码和一般的JDBC类似,区别只在于连接URL的写法上,需要将配置文件的位置声明一下。 public class Demo { public static void main(String[] args) throws SQLException, ClassNotFoundException { Class.forName("org.apache.calcite.jdbc.Driver"); Properties config = new Properties(); config.put("model", "./src/main/resources/model.json"); String sql = "select * from hello"; try (Connection con = DriverManager.getConnection("jdbc:calcite:", config)) { try (Statement stmt = con.createStatement()) { ResultSet rs = stmt.executeQuery(sql); while (rs.next()) { System.out.println(rs.getString(2)); } } } }} 其中SQL 语句,可以支持条件过滤,join 等所有的标准SQL。 你说我很忙,不想啰哩啰嗦再写个Java程序,办法也还有。有个程序叫 sqlline,可以方便你在命令行里执行,一个脚本连接到对应的文件数据库之后,就开始你飞一般的SQL表演吧。 sqlline> !connect jdbc:calcite:model=src/main/resources/model.json admin admin
五分钟爆改,把你的JSON/CSV文件打造成MySQL数据库
来源:这里教程网
时间:2026-03-03 16:24:22
作者:
编辑推荐:
- 五分钟爆改,把你的JSON/CSV文件打造成MySQL数据库03-03
- 十行代码让你的单机“影分身”,分布式训练速度快到飞起03-03
- 【遇见Doris】基于Doris的有道精品课数据中台建设实践03-03
- 阿里面试官:说说操作系统微内核和Dubbo微内核?03-03
- impdp全库导入时报错ORA-39083,ORA-23327,ORA-31693,ORA-31640等03-03
- Oracle TX锁的处理03-03
- 使用11g客户端或pl/sql developer连接高版本Oracle 19c ORA-28040 ORA-0101703-03
- oracle 更改分区表数据 ora-1440203-03
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- Oracle TX锁的处理
Oracle TX锁的处理
26-03-03 - oracle 更改分区表数据 ora-14402
oracle 更改分区表数据 ora-14402
26-03-03 - ORACLE rman与RMAN-00054&ORA-09945
ORACLE rman与RMAN-00054&ORA-09945
26-03-03 - Oracle 12.2之后补丁RU RUR概要
Oracle 12.2之后补丁RU RUR概要
26-03-03 - unable to extend table SYS.AUD$ by 1024 in tablespace SYSTEM
- 【BUILD_ORACLE】使用ASMLib包搭建ASM磁盘
【BUILD_ORACLE】使用ASMLib包搭建ASM磁盘
26-03-03 - 干货 | 设计师必备中国风配色卡,快来收藏
干货 | 设计师必备中国风配色卡,快来收藏
26-03-03 - Thread 1 cannot allocate new log
Thread 1 cannot allocate new log
26-03-03 - Oracle database 19c中获取当前数据库版本的方法
Oracle database 19c中获取当前数据库版本的方法
26-03-03 - Oracle如何删除表中重复记录保留第一条
Oracle如何删除表中重复记录保留第一条
26-03-03
