GreenPlum - Schema 如何连接?

简介: GreenPlum - Schema 如何连接?

背景

最近在写多数据源的时候,遇到了 GP,因为之前倒腾过 Oracle 和 Gaussdb,他们也都有 schema 的概念,以为这个也差不多,但是发现在连接池那块总是报错 schema,如下

java.lang.AbstractMethodError: com.pivotal.jdbc.greenplumbase.ddu.setSchema

后来在一番倒腾,找到了解决方案~

方案

1、URL 拼接 Schema

这个方案是针对使用 com.pivotal.jdbc.GreenplumDriver 驱动来讲的,URL 规范jdbc:pivotal:greenplum:// 因为在如下连接的时候,绝对报上面的错

<dependency><groupId>com.pivotal.greenplum</groupId><artifactId>greenplum</artifactId><version>1.0</version></dependency>
HikariConfigconfiguration=newHikariConfig();
configuration.setJdbcUrl(url);
configuration.setUsername(username);
configuration.setPassword(password);
configuration.setDriverClassName(driverName);
configuration.setSchema(schema);
HikariDataSourcehikariDataSource=newHikariDataSource(configuration);

所以我们需要稍微改造下,采用拼接 URL,代码如下

HikariConfigconfiguration=newHikariConfig();
// 处理特殊数据库的 URLDataSourceEntityUtil.evalParam(dataSource);
configuration.setJdbcUrl(dataSource.getUrl());
configuration.setUsername(username);
configuration.setPassword(password);
configuration.setDriverClassName(driverName);
configuration.setSchema(dataSource.getSchema());
HikariDataSourcehikariDataSource=newHikariDataSource(configuration);
publicclassDataSourceEntityUtil {
publicstaticvoidevalParam(DataSourceEntitydataSource) {
IntegerdataSourceType=dataSource.getDataSourceType();
if (DataSourceTypeEnum.GREENPLUM.getType().equals(dataSourceType)) {
dataSource.setUrl(buildUrlForGreenPlum(dataSource));
// 清空 SchemadataSource.setSchema(null);
        }
    }
privatestaticStringbuildUrlForGreenPlum(DataSourceEntitydataSource) {
Stringschema=dataSource.getSchema();
Stringurl=dataSource.getUrl() +";initializationString=set search_path to "+schema;
returnurl;
    }
}

2、使用 setSchema 方法

<dependency><groupId>org.postgresql</groupId><artifactId>postgresql</artifactId><version>42.1.1</version></dependency>

首先这种驱动,需要按照它的 URL 规范 jdbc:postgresql://XXX,然后使用下面这种方式即可,但唯一的缺点就是如果你项目中还有 GaussDB,那么它会和 GaussDB 的驱动 JAR 会依赖冲突,所以就只能转向第一种方案了,否则的话用这个即可

HikariConfigconfiguration=newHikariConfig();
configuration.setJdbcUrl(url);
configuration.setUsername(username);
configuration.setPassword(password);
configuration.setDriverClassName(driverName);
configuration.setSchema(schema);
HikariDataSourcehikariDataSource=newHikariDataSource(configuration);
目录
打赏
0
0
0
0
38
分享
相关文章
深入浅出 HBase 实战 | 青训营笔记
Hbase是一种NoSQL数据库,这意味着它不像传统的RDBMS数据库那样支持SQL作为查询语言。Hbase是一种分布式存储的数据库,技术上来讲,它更像是分布式存储而不是分布式数据库,它缺少很多RDBMS系统的特性,比如列类型,辅助索引,触发器,和高级查询语言等待。
1283 0
深入浅出 HBase 实战 | 青训营笔记
如何查看spark与hadoop、kafka、Scala、flume、hive等兼容版本【适用于任何版本】
如何查看spark与hadoop、kafka、Scala、flume、hive等兼容版本【适用于任何版本】
1313 0
如何查看spark与hadoop、kafka、Scala、flume、hive等兼容版本【适用于任何版本】
PostgreSQL datediff 日期间隔(单位转换)兼容SQL用法
标签 PostgreSQL , datediff 背景 使用datediff,对时间或日期相减,得到的间隔,转换为目标单位(日、月、季度、年、小时、秒。。。等)的数值。 DATEDIFF ( datepart, {date|timestamp}, {date|timestamp} ) 周...
16034 0
springboot使用Pivotal Greenplum JDBC如何进行配置
【5月更文挑战第23天】springboot使用Pivotal Greenplum JDBC如何进行配置
324 6
阿里云 Serverless 异步任务处理系统在数据分析领域的应用
本文主要介绍异步任务处理系统中的数据分析,函数计算异步任务最佳实践-Kafka ETL,函数计算异步任务最佳实践-音视频处理等。
176110 349
DolphinScheduler教程(02)- 系统架构设计(上)
DolphinScheduler教程(02)- 系统架构设计(上)
414 0
DolphinScheduler教程(02)- 系统架构设计(上)
Java一分钟之-JPA事务管理:PROPAGATION_REQUIRED, PROPAGATION_REQUIRES_NEW等
【6月更文挑战第14天】Java企业开发中,事务管理确保数据一致性,Spring事务管理核心概念包括`PROPAGATION_REQUIRED`和`PROPAGATION_REQUIRES_NEW`。前者在无事务时新建,有事务时加入,常用于保证业务方法在事务中执行。后者始终创建新事务,独立于当前事务,适用于需隔离影响的场景。理解其应用场景和易错点,合理配置事务传播行为,能提升应用的健壮性和性能。通过监控和日志优化事务策略是关键。
303 1
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等