编程接口

因为OushuDB和PostgreSQL兼容,所以可以使用PostgreSQL的驱动和编程接口来访问OushuDB。

JDBC例子

下面给出一个简单的JDBC访问OushuDB的例子。

// OushuDBJDBC.java

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.DriverManager;
import java.sql.ResultSetMetaData;

public class OushuDBJDBC {
    public static Connection getConn() {
        Connection conn = null;
        try {
            Class.forName("org.postgresql.Driver");
            String url = "jdbc:postgresql://localhost:5432/postgres";
            try {
                conn = DriverManager.getConnection(url, "ChangLei", "");
            }
            catch (SQLException e) {
                e.printStackTrace();
            }
        }
        catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

        return conn;
    }

    public static void main(String[] args) {
        Connection conn= getConn();
        String sql = "select * from gp_segment_configuration";
        try {
            Statement stmt=conn.createStatement();
            ResultSet rs=stmt.executeQuery(sql);
            ResultSetMetaData rsmd = rs.getMetaData();
            int numCol = rsmd.getColumnCount();

            for (int i = 0; i < numCol; i++) {
                System.out.print(rsmd.getColumnName(i + 1) + ' ');
            }

            System.out.println();

            while(rs.next()) {
                for (int i = 0; i < numCol; i++) {
                  System.out.print(rs.getString(i + 1) + ' ');
                }
                System.out.println();
            }
        }
        catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

编译运行上面的代码需要下面几步:

  • 安装JDK,并确认java和javac命令工作
  • 拷贝上面的代码到 OushuDBJDBC.java,需要更改下面这行里面的OushuDB用户名和密码。
# 为了访问OushuDB,如果你还没有一个用户,你需要创建一个用户,并为其分配权限,而且修改pg_hba.conf让该用户可以连接数据库。可以参见如下连接:
#   - 创建用户:http://www.oushu.io/docs/hawq/reference/sql/create-user/
#   - 分配权限:http://www.oushu.io/docs/hawq/reference/sql/grant/
#   - 修改pg_hba.conf: https://www.postgresql.org/docs/8.2/static/auth-pg-hba-conf.html
#   注意修改pg_hba.conf后master节点需要重新加载pg_hba.conf,可以使用命令:hawq stop --reload

conn = DriverManager.getConnection(url, "ChangLei", "");

下载JDBC驱动:

wget https://jdbc.postgresql.org/download/postgresql-9.4.1212.jar

编译

javac -cp ./postgresql-9.4.1212.jar OushuDBJDBC.java

运行OushuDBJDBC

changlei:dev ChangLei$ java OushuDBJDBC
registration_order role status port hostname address description
0 m u 5432 changlei changlei null
1 p u 40000 localhost 127.0.0.1