
Java 作为当前使用最普遍的开发语言,通过JDBC的形式联接 Greenplum 数据库。目前有两种JDBC联接包可以实现联接:一种是通过 PostgreSQL 的插口库联接,另一种就是官方 partner 提供的联接库( greenplum.jar ),第二种专门针对 Greenplum 进行了优化,性能上稍优,下面针对这两种方法进行详尽的介绍。
开源 PostgreSQL JDBC 连接 Greenplum
首先须要到 PostgreSQL 的官网上下载与JDK版本对应的JDBC驱动( )。我这儿下载的是与JDK 1.8对应的最新版本jar包:postgresql-42.2.9.jar。
然后将jar包加载到对应的项目中,在如下代码中,最主要的是驱动名称和联接URL地址。
Class.forName("org.postgresql.Driver");
c = DriverManager.getConnection("jdbc:postgresql://10.211.55.6:5432/postgres", "gpadmin1", "");
一个采用 PostgreSQL JDBC 的建表操作示例
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class PostgreSQLJDBC {
public static void main(String args[]) {

Connection c = null;
Statement stmt = null;
try {
Class.forName("org.postgresql.Driver");
c = DriverManager.getConnection("jdbc:postgresql://10.211.55.6:5432/postgres", "gpadmin1", "");
c.setAutoCommit(false);
System.out.println("Opened database successfully");
stmt = c.createStatement();
String sql = "CREATE TABLE STUDENTS " +
"(ID TEXT PRIMARY KEY NOT NULL ," +
" NAME TEXT NOT NULL, " +
" SEX TEXT NOT NULL, " +

" AGE TEXT NOT NULL)";
stmt.executeUpdate(sql);
System.out.println("Table created successfully");
stmt.close();
c.commit();
c.close();
} catch (Exception e) {
System.err.println(e.getClass().getName() + ": " + e.getMessage());
System.exit(0);
}
}
}
官方JDBC联接 Greenplum
官方JDBC联接形式与前面操作步骤基本一致,首先须要到 Pivotal 的官网上下载与 Greenplum 版本对应的JDBC驱动( #topic_ylk_pbx_2bb )。官方的驱动目前支持到JDK 8,JDBC功能支持到4.0版本。下载解压后的驱动名称有点长:PROGRESS_DATADIRECT_JDBC_DRIVER_PIVOTAL_GREENPLUM_5.1.4.000275.jar,我一般习惯将它改为:greenplum.jar,直接mv更改,方便后期维护jar包便捷。
接下来也是将jar包加载到对应的项目中,在如下代码中,注意此时的驱动名称和联接URL地址与之前的PG驱动可不一样了。
Class.forName("com.pivotal.jdbc.GreenplumDriver");
c = DriverManager.getConnection("jdbc:pivotal:greenplum://10.211.55.6:5432;;DatabaseName=postgres", "gpadmin1", "");
一个采用 Greenplum JDBC的建表操作示例
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class GreenplumJDBC {
public static void main(String args[]) {
Connection c = null;

Statement stmt = null;
try {
Class.forName("com.pivotal.jdbc.GreenplumDriver");
c = DriverManager.getConnection("jdbc:pivotal:greenplum://10.211.55.6:5432;;DatabaseName=postgres", "gpadmin1", "");
c.setAutoCommit(false);
System.out.println("Opened database successfully");
stmt = c.createStatement();
String sql = "CREATE TABLE STUDENTS " +
"(ID TEXT PRIMARY KEY NOT NULL ," +
" NAME TEXT NOT NULL, " +
" SEX TEXT NOT NULL, " +
" AGE TEXT NOT NULL)";

stmt.executeUpdate(sql);
System.out.println("Table created successfully");
stmt.close();
c.commit();
c.close();
} catch (Exception e) {
System.err.println(e.getClass().getName() + ": " + e.getMessage());
System.exit(0);
}
}
}
注意:如果要在同一个数据库中重复创建表,会报错:表students已存在,注意这不是事例有错误。再次执行事例之前请从数据库中先删掉表。
其他的增删改查操作参考JDBC的标准操作即可,如有问题请留言交流。
本系列开发语言联接 Greenplum 方法的文章到此结束了,如果有其他需求也请留言交流。