Calcite源码阅读三

简介: 利用calcite和avatica创建自己的csv服务器数据库

一、服务端

  public static void main(String[] args) throws Exception{
        HttpServer server = start(8765);
        server.join();
    }

    public static HttpServer start(int port) throws Exception {
        Properties info = new Properties();
        info.put("model",
                "inline:"
                        + "{\n"
                        + "  version: '1.0',\n"
                        + "  defaultSchema: 'SALES',\n"
                        + "   schemas: [\n"
                        + "     {\n"
                        + "       name: 'SALES',\n"
                        + "       tables: [\n"
                        + "         {\n"
                        + "           name: 'DEPTS',\n"
                        + "           type: 'custom',\n"
                        + "           factory: 'org.apache.calcite.adapter.csv.CsvTableFactory',\n"
                        + "           operand: {\n"
                        + "             file: '/Users/xxx/project/calcitetest/src/main/resources/DEPTS.csv',\n"
                        + "             flavor: 'scannable'\n"
                        + "           }\n"
                        + "         }\n"
                        + "       ]\n"
                        + "     }\n"
                        + "   ]\n"
                        + "}");
        Meta meta = new JdbcMeta("jdbc:calcite:", info);
        Service service = new LocalService(meta);
        HttpServer server = new HttpServer(port,new AvaticaJsonHandler(service));
        server.start();
        System.out.println("server start...");
        return server;
    }

二、客户端

  public static void main(String[] args) throws Exception{
        Class.forName("org.apache.calcite.avatica.remote.Driver");
        Connection conn = DriverManager.getConnection("jdbc:avatica:remote:url=http://localhost:8765","username","password");
        Statement statement = conn.createStatement();
        ResultSet rs = statement.executeQuery("select * from DEPTS");
        while(rs.next()){
            System.out.println(rs.getString(1));
        }
        rs.close();
        statement.close();
        conn.close();
    }

三、服务执行
开启服务端,执行客户端,得到输出

10
20
30

四、项目依赖

org.apache.calcite:calcite-core:1.19.0
org.apache.calcite:calcite-example-csv:1.19.0
org.apache.calcite.avatica:avatica-server:1.13.0
com.alibaba:fastjson:1.2.54
com.google.guava:guava:16.0.1
目录
相关文章
|
SQL 存储 分布式计算
统一sql引擎Quicksql
统一sql引擎Quicksql
|
消息中间件 SQL 分布式计算
一篇文章搞定数据同步工具SeaTunnel
一篇文章搞定数据同步工具SeaTunnel
9388 1
|
SQL NoSQL Java
JAVA使用Apcahe Calcite 解析sql
JAVA使用Apcahe Calcite 解析sql
4182 0
|
12月前
|
人工智能 安全 Android开发
移动应用与系统:构建高效、安全的数字生态##
随着科技的飞速发展,移动设备已成为人们日常生活中不可或缺的一部分。本文将深入探讨移动应用开发和移动操作系统的关键技术,分析当前市场趋势,并展望移动技术的未来发展方向。我们将重点关注移动应用的安全性、性能优化以及跨平台开发的实践,旨在为读者提供一个全面而深入的视角,以理解和应对不断变化的移动技术挑战。 ##
|
开发框架 前端开发 .NET
CodeWF.EventBus:轻量级事件总线,让通信更流畅
CodeWF.EventBus,一款灵活的事件总线库,实现模块间解耦通信。支持多种.NET项目类型,如WPF、WinForms、ASP.NET Core等。采用简洁设计,轻松实现事件的发布与订阅。通过有序的消息处理,确保事件得到妥善处理。简化您的代码,提升系统可维护性。
|
存储 流计算
在Flink CDC中,Checkpoint的清理策略通常有两种设置方式
在Flink CDC中,Checkpoint的清理策略通常有两种设置方式
565 5
|
SQL 开发框架 .NET
calcite入门02-连接多数据源
calcite入门02-连接多数据源
740 0
|
Java 关系型数据库 MySQL
Calcite源码阅读一
Calcite子项目avatica源码阅读
1501 0
Calcite源码阅读一
|
算法 C语言 C++
c++游戏制作指南(三):c++剧情类文字游戏的制作
c++游戏制作指南(三):c++剧情类文字游戏的制作
1709 0

热门文章

最新文章