当前位置: 首页 > 科技观察

五分钟改,把你的JSON-CSV文件变成MySQL数据库

时间:2023-03-13 07:06:02 科技观察

生活中,你我一定见过“XX元爆改出租屋”、“爆改车”等文章,作为一个IT人,折腾的能量一点都不差。在软件开发过程中,您是否有时会拿业务提供的CSV或JSON数据文件,编写解析程序,存入数据库,然后在自己的程序中通过数据库读取出来?其实,没那么麻烦,绕了一大圈。今天,我们就把JSON/CSV文件“炸开”,变成像MySQL一样的关系型数据库,一套SQL查询,全世界都可以用。:-)第1步:在代码中添加Maven依赖org.apache.calcitecalcite-file1.21.0通过这一步,大家大概可以看出,我们今天的爆发式变化主要依赖于Apache的顶级项目Calcite。官网截图体验一下:简单介绍,是一个数据库查询优化引擎,不负责具体的存储。所以介绍的人也说它是你高性能数据库的基础。很多开源项目都是基于它的,比如大名鼎鼎的:Step2:添加配置文件配置的JSON文件,一般是这样的:修改后的配置文件,就像一张行军打仗的地图,告诉我们在哪里togo去哪里,这里的配置文件是对应关系数据库的,就像哪个库,哪个表一样。{"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可以支持多种数据格式,大家也可以通过这张图感受一下。第三步:JDBCStyle可以通过JDBC连接到我们自己的数据库查询。代码与一般的JDBC类似,区别仅在于连接URL的写法,需要声明配置文件的位置。publicclassDemo{publicstaticvoidmain(String[]args)throwsSQLException,ClassNotFoundException{Class.forName("org.apache.calcite.jdbc.Driver");Propertiesconfig=newProperties();config.put("model","./src/main/resources/model.json");Stringsql="select*fromhello";try(Connectioncon=DriverManager.getConnection("jdbc:calcite:",config)){try(Statementsstmt=con.createStatement()){ResultSetrs=stmt.executeQuery(sql);while(rs.next()){System.out.println(rs.getString(2));}}}}}其中,SQL语句可以支持条件过滤等所有标准SQL加入。整体工程结构如下:PS:忘了说了,对于CSV文件,第一行需要加上列名和每一列的类型,表示在数据库表中定义的列。你说我很忙,不想再写Java程序了,还有别的办法。有一个程序叫sqlline,方便你在命令行执行。一个脚本连接到相应的文件数据库后,就可以开始你的普通SQL性能了。sqlline>!connectjdbc:calcite:model=src/main/resources/model.jsonadminadmin本文转载自微信公众号《Tomcat那些事》,可通过以下二维码关注。转载此文请联系Tomcat那些东西公众号。