使用sqlline通过Calcite驱动程序连接到JDBC数据库



我想使用calcite git repo中包含的sqlline shell脚本包装器,通过Calcite驱动程序连接到JDBC数据库,例如Postgres。我面临的问题是如何指定目标JDBC Postgres驱动程序。最初我尝试了这个:

CLASSPATH=/Users/davidkubecka/git/calcite/build/libs/postgresql-42.2.18.jar ./sqlline -u jdbc:calcite:model=model.json

model.json是这样的:

{
  "version": "1.0",
  "defaultSchema": "tpch",
  "schemas": [
    {
      "name": "tpch",
      "type": "jdbc",
      "jdbcUrl": "jdbc:postgresql://localhost/*",
      "jdbcSchema": "tpch",
      "jdbcUser": "*",
      "jdbcPassword": "*"
    }
  ]
}

但是

  • 首先,我被要求输入用户名和密码,尽管模型中已经指定了
  • 第二,在填写凭据后,我仍然会出错
java.lang.RuntimeException: java.sql.SQLException: Cannot create JDBC driver of class '' for connect URL 'jdbc:postgresql://localhost/*'

所以我的问题是,这个场景(通过sqlline在Calcite驱动程序中使用JDBC驱动程序(是否受支持,如果受支持,我如何进行连接?

尝试将jdbc驱动程序包含在模式定义中,并确保它在类路径中。此外,将您的数据库名称添加到jdbc Url中。您的model.json可能看起来像:

{
  "version": "1.0",
  "defaultSchema": "tpch",
  "schemas": [
    {
      "name": "tpch",
      "type": "jdbc",
      "jdbcUrl": "jdbc:postgresql://localhost/my_database",
      "jdbcSchema": "tpch",
      "jdbcUser": "*",
      "jdbcPassword": "*",
      "jdbcDriver": "org.postgresql.Driver"
    }
  ]
}

最新更新