我想使用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"
}
]
}