云原生数据仓库AnalyticDB PostgreSQL版完全兼容PostgreSQL消息协议,可以直接使用支持PostgreSQL消息协议的工具进行管理和开发。

背景信息

云原生数据仓库AnalyticDB PostgreSQL版完全兼容PostgreSQL消息协议,您可以直接使用支持PostgreSQL消息协议的工具和图形化工具管理和开发云原生数据仓库AnalyticDB PostgreSQL版

  • 支持PostgreSQL消息协议的工具:命令行psql、libpq、JDBC、ODBC、psycopg2等。
  • 图形化工具:DBeaver(需为DBeaver 6.0.0及之后版本),阿里云数据管理服务DMS等。
说明 AnalyticDB PostgreSQL 4.3版基于PostgreSQL 8.3内核版本; AnalyticDB PostgreSQL 6.0版基于PostgreSQL 9.4内核版本。

DMS

数据管理(Data Management Service,简称DMS)支持MySQL、SQL Server、PostgreSQL、PPAS、Petadata等关系型数据库,DRDS等OLTP数据库,AnalyticDB、DLA等OLAP数据库和MongoDB、Redis等NoSQL的数据库管理。它是一种集数据管理、结构管理、用户授权、安全审计、数据趋势、数据追踪、BI图表、性能与优化和服务器管理于一体的数据管理服务。

以下内容将为您介绍如何使用DMS登录云原生数据仓库AnalyticDB PostgreSQL版

  1. 登录云原生数据仓库AnalyticDB PostgreSQL版控制台
  2. 可选:创建AnalyticDB PostgreSQL实例。具体操作,请参见创建实例

    若已创建AnalyticDB PostgreSQL实例,请跳过该步骤。

  3. 在控制台左上角,选择实例所在地域。
  4. 找到目标实例,单击实例ID。
  5. 可选:创建数据库账号。具体操作,请参见创建数据库账号

    如果已经创建初始账号,则可以使用该账号直接登录数据库。

  6. 单击实例详情页右上角登录数据库登录数据库
  7. 登录实例页面输入数据库账号数据库密码,单击登录
    说明 如果是第一次使用DMS登录 AnalyticDB PostgreSQL实例,系统会提示您 设置白名单,在 白名单问题窗口单击 设置白名单即可。

更多关于DMS的信息,请参见数据管理

psql

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

下载方式:

对于RHEL(Red Hat Enterprise Linux)和CentOS版本的6和7版本的平台,可以通过以下地址进行下载,解压后即可使用:

将客户端工具压缩包下载到本地后,需要进行解压并安装,以下内容以CentOS 7平台上安装AnalyticDB PostgreSQL 6.0版客户端工具为例,其使用方式如下:

  1. 在客户端工具压缩包目录下,解压文件,命令如下:
    tar -xzvf adbpg_client_package.el7.x86_64.tar.gz
  2. 解压后切换到bin目录下,执行如下命令:
    cd adbpg_client_package/bin
  3. bin目录下包括客户端工具psql、pg_dump等,按照各工具参考文档,执行命令行。
    • psql连接客户端的具体操作,请参见psql
    • pg_dump是PostgreSQL的逻辑备份工具。pg_dump的使用方式,请参见pg_dump

操作步骤如下:

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

      psql "host=yourgpdbaddress.gpdb.rds.aliyuncs.com port=5432 dbname=postgres user=gpdbaccount password=gpdbpassword"
    • 指定参数的方式:

      psql  -h yourgpdbaddress.gpdb.rds.aliyuncs.com -p 5432 -d postgres -U gpdbaccount

      参数说明:

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

psql相关文档如下:

  • 关于Greenplum的psql的更多使用方法。具体内容,请参见Greenplum psql

  • AnalyticDB PostgreSQL版也支持PostgreSQL的psql命令,使用时请注意细节上的差异。具体内容,请参见PostgreSQL psql

此外云原生数据仓库AnalyticDB PostgreSQL版也支持Docker形态的工具包,你可以在Docker官网找到对应平台的Docker安装地址。

操作示例如下:

  • 运行对应AnalyticDB PostgreSQL 4.3版的工具镜像:
    docker run -idt --name=adbpgcli aliadbpg/adbpgcli:v4.3.0  
    docker exec -it adbpgcli /bin/bash -l
  • 运行对应AnalyticDB PostgreSQL 6.0版的工具镜像:
    docker run -idt --name=adbpgcli aliadbpg/adbpgcli:v6.3.0
    docker exec -it adbpgcli /bin/bash -l

DBeaver

DBeaver可以在Windows,macOS和Linux等主流平台上运行,以下内容以Windows为例介绍如何使用DBeaver连接云原生数据仓库AnalyticDB PostgreSQL版实例。

  1. 下载并安装DBeaver社区版(Community Edition)安装包。下载连接,请参见DBeaver官网
  2. 运行DBeaver,在上方菜单栏中单击数据库 > 新建连接
  3. 创建新建连接窗口,选择Greenplum数据库类型,单击下一步(N)
    说明 如果是首次连接则需要下载对应数据库驱动文件。
  4. 连接设置窗口的常规页签,输入以下参数。
    参数 说明 示例
    主机 AnalyticDB PostgreSQL版的连接地址和端口,查看方式如下:
    1. 登录云原生数据仓库AnalyticDB PostgreSQL版控制台
    2. 在控制台左上角,选择实例所在地域。
    3. 找到目标实例,单击实例ID。
    4. 基本信息页面的数据库连接区域,即可查看内网地址内网端口外网地址外网端口查看连接地址
    gp-bp1g*************-master.gpdbmaster.rds.aliyuncs.com
    端口 5432
    数据库 需要管理的数据库。 postgres
    用户名 AnalyticDB PostgreSQL版的数据库账号。如何创建账号,请参见创建数据库账号 testuser
    密码 AnalyticDB PostgreSQL版数据库账号对应的密码。 PassW0rd
  5. 单击测试链接(T),在返回的窗口中提示已连接即可。
    说明 如果测试链接时遇到了 org.postgresql.Driver报错,可以尝试 下载/更新Greenplum驱动的库,具体操作如下:
    1. 连接设置页面的常规页签中,单击编辑驱动设置
    2. 页签中单击下载/更新(D)
  6. 单击完成

JDBC

您可以使用PostgreSQL或Greenplum的JDBC驱动包连接AnalyticDB 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:5432/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();  
        }  
    }  
}

更多关于JDBC驱动的信息,请参见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
  2. psycopg2安装完成后,需要设置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=5432)
     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目录下可以找到其静态库和动态库。

ODBC

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

使用ODBC驱动连接AnalyticDB PostgreSQL的操作步骤如下:

  1. 安装驱动。安装命令如下:
    yum install -y unixODBC.x86_64  
    yum install -y postgresql-odbc.x86_64
  2. 配置数据源,命令如下:
    vim /etc/odbc.ini

    添加连接信息,连接信息示例如下。

    [mygpdb]
    Description = Test to gp
    Driver = PostgreSQL
    Database = ****
    Servername = ****.gpdb.rds.aliyuncs.com
    UserName = ****
    Password = ****
    Port = ****
    ReadOnly = 0
    说明 将如下示例代码中的 ****改成对应的连接信息。
  3. 测试连通性。示例如下:
    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
  4. ODBC已连接上实例,将应用连接ODBC即可,具体操作请参见 psqlODBCC# 连接到 PostgreSQL

其他参考信息

  • 图形客户端工具

    AnalyticDB PostgreSQL版可以直接使用Greenplum支持的其它图形化客户端工具,例如DBeaver

  • Greenplum客户端参考

    Greenplum官网也提供了一个安装包,包含JDBC、ODBC和libpq,您可以方便地安装和使用。具体内容,请参见Greenplum 官方文档

参考文档