云数据库 HybridDB 基于开源数据库Greenplum Database,而Greenplum 基于 PostgreSQL 8.2 分支开发,完整兼容其消息协议。因此,HybridDB 用户可以直接使用支持 PostgreSQL 8.2 消息协议的工具,例如 libpq、JDBC、ODBC、psycopg2、pgadmin III 等。
HybridDB提供了Redhat平台的二进制psql程序下载链接。Greenplum 官网也提供了一个安装包,包含 JDBC、ODBC 和 libpq,方便安装和使用,详情请参见Greenplum 官方文档。
psql
psql 是 Greenplum 中比较常用的工具,提供了丰富的命令,其二进制文件在 Greenplum 安装后的 BIN 目录下。使用步骤如下所示:
通过如下任意一种方式进行连接
-
连接串的方式
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”。
- 也可以使用 PostgreSQL 的 psql 命令,请注意使用细节上的差异。详情请参见“PostgreSQL 8.3.23 Documentation -- psql”。
pgAdmin III
pgAdmin III 是PostgreSQL图形客户端,可以直接用于连接HybridDB。详情请参见这里。
pgAdmin III 1.6.3可以从PostgreSQL官网下载。pgAdmin III 1.6.3支持各种平台(Windows、MacOS、Linux)。注意,HybridDB与PostgreSQL 8.2版本兼容,因此必须使用pgAdmin III 1.6.3或之前的版本才能连接HybridDB(pgAdmin 4也是不支持的)。下载安装后,打开"文件"->"新增服务器"菜单,可以看到配置连接的窗口。按如下图类似的方式,填入”名称“、”主机地址”、“端口号”、“数据库”、“用户名”、“密码”等信息,点击“确定”即可连接到HybridDB。
其他更多图形客户端,请参考 下载链接。
JDBC
JDBC 采用 PostgreSQL 的即可。下载方法如下:
- 单击这里,下载 PostgreSQL 的官方 JDBC,下载之后加入到环境变量中。
- 也可采用 Greenplum 官网提供的工具包,详情请参见“Greenplum Database 4.3 Connectivity Tools for UNIX”。
代码案例:
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。使用步骤如下:
安装 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 官网下载,可以单击这里。
-
安装驱动
yum install -y unixODBC.x86_64 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。