开发者社区> 问答> 正文

如何连接云数据库 HybridDB for PostgreSQL

Greenplum Database 开源数据库基于 PostgreSQL 8.2 分支开发,完整兼容其消息协议,云数据库 HybridDB for PostgreSQL 同样基于此版本。因此,理论上来讲,HybridDB for PostgreSQL 用户可以直接使用支持 PostgreSQL 8.2 消息协议的工具,例如 libpq、JDBC、ODBC、psycopg2、pgadmin III 等。
HybridDB for PostgreSQL 提供了 Redhat 平台的二进制 psql 程序,下载链接参见 客户端工具。Greenplum 官网也提供了一个安装包,包含 JDBC、ODBC 和 libpq,方便安装和使用,详情参见 Greenplum 官方文档

psql


psql 是 Greenplum 中比较常用的工具,提供了丰富的命令,其二进制文件在 Greenplum 安装后的 BIN 目录下。使用步骤如下所示:


  1. 通过如下任意一种方式进行连接:

    • 连接串的方式psql "host=yourgpdbaddress.gpdb.rds.aliyuncs.com port=3568 dbname=postgres user=gpdbaccount password=gpdbpassword"
    • postgres=> select version();
    • version
    • -----------------------------------------------------------------------------------------------
    • PostgreSQL 8.3devel (Greenplum Database 4.3.99.00 build dev) compiled on Jun 26 2016 23:44:59
    • (1 row)


  • 指定参数的方式psql  -h yourgpdbaddress.gpdb.rds.aliyuncs.com -p 3568 -d postgres -U gpdbaccount


  • 输入密码,进入 psql 的 Shell 界面。 postgres=> select version();
    version
    -----------------------------------------------------------------------------------------------
    PostgreSQL 8.3devel (Greenplum Database 4.3.99.00 build dev) compiled on Jun 26 2016 23:44:59
    (1 row)


    参数说明:
    • -h:指定主机地址。
    • -p:指定端口号。
    • -d:指定数据库(默认的数据库是 postgres),
    • -U:指定连接的用户。
    • 可以通过psql --help查看更多选项。在 psql 中,可以执行\?查看更多 psql 中支持的命令。


    参考文档


    • 关于 Greenplum 的 psql 的更多使用方法,请参见文档“psql”。

    • HybridDB for PostgreSQL 也支持 PostgreSQL 的 psql 命令,使用时请注意细节上的差异。详情参见“PostgreSQL 8.3.23 Documentation — psql”。


    pgAdmin III


    pgAdmin III 是 PostgreSQL 图形客户端,可以直接用于连接 HybridDB for PostgreSQL。详情参见 这里
    您可以从 PostgreSQL 官网 下载 pgAdmin III 1.6.3。pgAdmin III 1.6.3 支持各种平台,例如 Windows、MacOS 和 Linux。其它图形客户端,详情参见 客户端工具

    [backcolor=transparent]注意:HybridDB for PostgreSQL 与 PostgreSQL 8.2 版本兼容,因此必须使用 pgAdmin III 1.6.3 或之前的版本才能连接 HybridDB for PostgreSQL(pgAdmin 4 也是不支持的)。


    操作步骤


    1. 下载安装 pgAdmin III 1.6.3 或之前的版本。

    2. 选择[backcolor=transparent]文件 > [backcolor=transparent]新增服务器,进入配置连接窗口。

    3. 填写配置信息,如下图所示:

    4. 单击[backcolor=transparent]确定,即可连接到 HybridDB。


    JDBC


    JDBC 采用 PostgreSQL 官方提供接口。下载方法如下:

    代码示例import java.sql.Connection;  
    import java.sql.DriverManager;  
    import java.sql.ResultSet;  
    import java.sql.SQLException;  
    import java.sql.Statement;  
    public class gp_conn {  
        public static void main(String[] args) {  
            try {  
                Class.forName("org.postgresql.Driver");  
                Connection db = DriverManager.getConnection("jdbc:postgresql://mygpdbpub.gpdb.rds.aliyuncs.com:3568/postgres","mygpdb","mygpdb");  
                Statement st = db.createStatement();  
                ResultSet rs = st.executeQuery("select * from gp_segment_configuration;");  
                while (rs.next()) {  
                    System.out.print(rs.getString(1));  
                    System.out.print("    |    ");  
                    System.out.print(rs.getString(2));  
                    System.out.print("    |    ");  
                    System.out.print(rs.getString(3));  
                    System.out.print("    |    ");  
                    System.out.print(rs.getString(4));  
                    System.out.print("    |    ");  
                    System.out.print(rs.getString(5));  
                    System.out.print("    |    ");  
                    System.out.print(rs.getString(6));  
                    System.out.print("    |    ");  
                    System.out.print(rs.getString(7));  
                    System.out.print("    |    ");  
                    System.out.print(rs.getString(8));  
                    System.out.print("    |    ");  
                    System.out.print(rs.getString(9));  
                    System.out.print("    |    ");  
                    System.out.print(rs.getString(10));  
                    System.out.print("    |    ");  
                    System.out.println(rs.getString(11));  
                }  
                rs.close();  
                st.close();  
            } catch (ClassNotFoundException e) {  
                e.printStackTrace();  
            } catch (SQLException e) {  
                e.printStackTrace();  
            }  
        }  
    }




    详细文档,请参见“ The PostgreSQL JDBC Interface”。

    Python


    Python 连接 Greenplum 和 PostgreSQL 用的库是 psycopg2。使用步骤如下:

    1. 安装 psycopg2。在 CentOS 下,有如下三种安装方法:

      • 方法一,执行如下命令:yum -y install python-psycopg2

      • 方法二,执行如下命令:pip install psycopg2

      • 从源码安装:yum install -y postgresql-devel*
      • wget  http://initd.org/psycopg/tarballs/PSYCOPG-2-6/psycopg2-2.6.tar.gz
      • tar xf psycopg2-2.6.tar.gz
      • cd psycopg2-2.6
      • python setup.py build
      • sudo python setup.py install


    安装后,设置 PYTHONPATH,之后就可以引用,如: import psycopg2
    sql = 'select * from gp_segment_configuration;'
    conn = psycopg2.connect(database='gpdb', user='mygpdb', password='mygpdb', host='mygpdbpub.gpdb.rds.aliyuncs.com', port=3568)
    conn.autocommit = True
    cursor = conn.cursor()
    cursor.execute(sql)
    rows = cursor.fetchall()
    for row in rows:
         print row
    conn.commit()
    conn.close()


    会得到类似以下的结果: (1, -1, 'p', 'p', 's', 'u', 3022, '192.168.2.158', '192.168.2.158', None, None)
    (6, -1, 'm', 'm', 's', 'u', 3019, '192.168.2.47', '192.168.2.47', None, None)
    (2, 0, 'p', 'p', 's', 'u', 3025, '192.168.2.148', '192.168.2.148', 3525, None)
    (4, 0, 'm', 'm', 's', 'u', 3024, '192.168.2.158', '192.168.2.158', 3524, None)
    (3, 1, 'p', 'p', 's', 'u', 3023, '192.168.2.158', '192.168.2.158', 3523, None)
    (5, 1, 'm', 'm', 's', 'u', 3026, '192.168.2.148', '192.168.2.148', 3526, None)



    libpq


    libpq 是 PostgreSQL 数据库的 C 语言接口,在 C 程序中通过 libpq 库访问 PostgreSQL 数据库并进行数据库操作。在安装了 Greenplum 或者 PostgreSQL 之后,在其 lib 目录下可以找到其静态库和动态库。
    相关案例请参见 这里,此处不再列举。
    关于 libpq 详情,请参见“ PostgreSQL 9.4.10 Documentation — Chapter 31. libpq - C Library”。

    ODBC


    PostgreSQL 的 ODBC 是基于 LGPL(GNU Lesser General Public License)协议的开源版本,可以在 PostgreSQL 官网下载。

    操作步骤


    1. 安装驱动。yum install -y unixODBC.x86_64  
    2. yum install -y postgresql-odbc.x86_64


    查看驱动配置。 cat /etc/odbcinst.ini
    # Example driver definitions
    # Driver from the postgresql-odbc package
    # Setup from the unixODBC package
    [PostgreSQL]
    Description     = ODBC for PostgreSQL
    Driver          = /usr/lib/psqlodbcw.so
    Setup           = /usr/lib/libodbcpsqlS.so
    Driver64        = /usr/lib64/psqlodbcw.so
    Setup64         = /usr/lib64/libodbcpsqlS.so
    FileUsage       = 1
    # Driver from the mysql-connector-odbc package
    # Setup from the unixODBC package
    [MySQL]
    Description     = ODBC for MySQL
    Driver          = /usr/lib/libmyodbc5.so
    Setup           = /usr/lib/libodbcmyS.so
    Driver64        = /usr/lib64/libmyodbc5.so
    Setup64         = /usr/lib64/libodbcmyS.so
    FileUsage       = 1


    配置 DSN,将如下代码中的****改成对应的连接信息。 [mygpdb]
    Description = Test to gp
    Driver = PostgreSQL
    Database = ****
    Servername = ****.gpdb.rds.aliyuncs.com
    UserName = ****
    Password = ****
    Port = ****
    ReadOnly = 0


    测试连通性。 echo "select count(*) from pg_class" | isql mygpdb
    +---------------------------------------+
    | Connected!                            |
    |                                       |
    | sql-statement                         |
    | help [tablename]                      |
    | quit                                  |
    |                                       |
    +---------------------------------------+
    SQL> select count(*) from pg_class
    +---------------------+
    | count               |
    +---------------------+
    | 388                 |
    +---------------------+
    SQLRowCount returns 1
    1 rows fetched


    ODBC 已连接上实例,将应用连接 ODBC 即可,请参见 这里C# 连接到 PostgreSQL

    展开
    收起
    云栖大讲堂 2017-11-01 10:28:06 2524 0
    0 条回答
    写回答
    取消 提交回答
    问答排行榜
    最热
    最新

    相关电子书

    更多
    云栖大会:开源 PolarDB 架构演进、关键技术与社区建设 立即下载
    2023云栖大会:和客户一起玩转PolarDB新特性 立即下载
    2023云栖大会:PolarDB for AI 立即下载