Redshift JDBC DatabaseMetaData.getDatabaseMajorVersion() 是不是返回最新值?

Posted

技术标签:

【中文标题】Redshift JDBC DatabaseMetaData.getDatabaseMajorVersion() 是不是返回最新值?【英文标题】:Does the Redshift JDBC DatabaseMetaData.getDatabaseMajorVersion() return an up to date value?Redshift JDBC DatabaseMetaData.getDatabaseMajorVersion() 是否返回最新值? 【发布时间】:2019-06-04 13:46:25 【问题描述】:

我的问题是如何从 Redshift JDBC 连接中获取正确的 redshift 数据库版本信息。 调用 JDBC DatabaseMetaData.getDatabaseMajorVersion() 和 DatabaseMetaData.getDatabaseMinorVersion 只会返回 8 和 0,我相信这只是一些硬编码值。是否有 JDBC 驱动程序 API 调用来获取一些合理的值?

我的备用解决方案是使用 https://docs.aws.amazon.com/redshift/latest/dg/r_VERSION.html 中记录的 VERSION 函数并提取集群版本。 不过,这需要我在我想使用纯 JDBC API 调用的地方运行 SQL。 它还返回一个长字符串(见下文),我们需要解析该字符串以获取集群版本(例如 1.0.7804)。

VERSION 函数返回如下字符串 "i686-pc-linux-gnu 上的 PostgreSQL 8.0.2,由 GCC gcc (GCC) 3.4.2 20041017 (Red Hat 3.4.2-6.fc3)、Redshift 1.0.7804 编译"

【问题讨论】:

【参考方案1】:

您可以使用 AWS CLI/API 调用 redshift describe-cluster-db-revisions

例如使用 cli

aws redshift describe-cluster-db-revisions

这将返回一个描述每个集群的 json 对象,包括一个包含当前数据库修订的对象“CurrentDatabaseRevision”。目前对我来说,这显示为“7562”。

https://docs.aws.amazon.com/cli/latest/reference/redshift/describe-cluster-db-revisions.html

https://docs.aws.amazon.com/redshift/latest/APIReference/API_DescribeClusterDbRevisions.html

【讨论】:

感谢您的回答。虽然这不是我的选择。需要通过JDBC访问。 CurrentDatabaseRevision 给出结果“7562”虽然很高兴知道。调用函数 VERSION 时返回的字符串包含“Redshift 1.0.7804”。我猜“1.0”部分是固定的。很高兴知道。 我认为你不能像你想要的那样通过 jdbc 做到这一点。

以上是关于Redshift JDBC DatabaseMetaData.getDatabaseMajorVersion() 是不是返回最新值?的主要内容,如果未能解决你的问题,请参考以下文章

带有自定义模式的 jdbc redshift 连接字符串

从节点 jdbc 访问 Redshift 数据时抛出错误

在 redshift 上使用 jdbc 下载大型数据集

spark和aws redshift:java.sql.SQLException:没有找到适合jdbc的驱动程序:redshift://xxx.us-west-2.redshift.amazonaws

Spark 2.0.0 使用 jdbc 从 Redshift 表中截断

如何使用python连接到redshift jdbc url?