perl语言连接GBase8a MPP的两种方法
当前程序开发中,数据库连接主要采用Java和Python作为实现语言。由于历史遗留原因,部分程序仍采用ADO.net、Perl等其他技术栈进行部署。本次内容将重点介绍Perl连接GBase 8a数据库的两种实现方法。
1、测试前环境准备
此次测试操作系统采用的是CentOS7。
安装介质列表
* perl
* unixODBC:ODBC连接测试工具
* DBD-ODBC: 为 Perl 的 DBI::DBD 提供了 ODBC 驱动的功能
* gccli: GBase8a MPP字符界面客户端
* GBaseODBC-9.5.0.2-centos7.x86_64.rpm
下载地址:https://www.gbase.cn/download/gbase-8a?category=DRIVER_PACKAGE
perl安装
[root@vm220 ~]# yum install perl
[root@vm220 ~]# perl -v
# 检查当前版本是perl5.16
This is perl 5, version 16, subversion 3 (v5.16.3) built for x86_64-linux-thread-multi
...
2、perl连接GBase 8a的两种方法
2.1 借助gccli客户端工具连接GBase 8a。
gccli是GBase提供的一种连接GBase8a MPP的客户端,我们可以用perl脚本直接调用gccli客户端来执行SQL脚本。
gccli客户端安装 安装GBase 8a的客户端,请请参考产品手册,此处略去。
[gbase@vm220 ~]$ gccli -uroot -proot -e"select @@version"
+---------------------------------+
| @@version |
+---------------------------------+
| 9.5.3.27.20_patch.4.r1.1ff35b58 |
+---------------------------------+
编写perl测试脚本
[gbase@vm220 ~]$ cat test_gccli.pl #! /usr/bin/perl
# 定义测试SQL
my $sql="select * from db01.employee";
# 连接数据库并执行
open my $conn,"| gccli -h192.168.10.220 -uroot -proot " or die "$!";
# 输出结果
print $conn $sql,"\n";
# 关闭连接 close $conn;
测试验证
[gbase@vm220 ~]$ perl test_gccli.pl
empid name
100 张三
105 李四
216 王五
2.2、通过ODBC协议连接GBase8a。
ODBC是由微软提出的数据库访问标准应用程序编程接口,大部分数据库管理系统都配置了ODBC驱动以实现应用对自己的访问。unixODBC是一款开源的ODBC驱动管理器。
GBase 8a ODBC驱动安装
[root@vm220 ~]# rpm -iv GBaseODBC-9.5.0.2-centos7.x86_64.rpm
unixODBC安装
[root@vm220 ~]# yum install unixODBC unixODBC-devel
安装其它依赖的组件
[root@vm220 ~]# yum install perl-DBI perl-ExtUtils-MakeMaker
用odbinst命令查看配置文件信息
[gbase@vm220 ~]$ odbcinst -j
unixODBC 2.3.1
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /home/gbase/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
odbinst.ini配置的是驱动信息,GBase8a驱动安装后,会增加下面的一段:
[gbase@vm220 ~]$ cat /etc/odbcinst.ini ...
[GBase8a] Driver=/usr/lib64/libgsodbc8.so
UsageCount=1 ......
odb.ini配置了数据源。
[gbase@vm220 [gbase8a]
Driver = GBase8a # 与odbcinst.ini中配置的驱动名一致
DATABASE = db01
DESCRIPTION = GBase 8a ODBC Driver
DSN SERVER = 192.168.10.220
PORT = 5258
UID = root
PASSWORD = root
isql测试GBase8a的连通性
[gbase@vm220 ~]$ isql gbase8a -v
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL> select count(1) from db01.t;
+---------------------+
| count(1) |
+---------------------+
| 2 |
+---------------------+
SQLRowCount returns 1
DBD-ODBC组件安装
[root@vm220 tmp]# tar -zxf DBD-ODBC-1.61.tar.gz
[root@vm220 tmp]# cd DBD-ODBC-1.61/
[root@vm220 DBD-ODBC-1.61]# perl Makefile.PL
[root@vm220 DBD-ODBC-1.61]# make && make install
编写测试脚本
[gbase@vm220 ~]$ cat test_odbc.pl
#!/usr/bin/perl use DBI;
use encoding 'utf-8';
$dbh=DBI->connect('dbi:ODBC:gbase8a', 'root', 'root');
my $sth=$dbh->prepare("select * from db01.employee");
$sth->execute();
while(@data=$sth->fetchrow_array())
{
print "$data[0] $data[1]\n";
}
测试结果
[gbase@vm220 ~]$ perl test_odbc.pl
100 张三
105 李四
216 王五
评论
热门帖子
- 12025-12-01浏览数:182759
- 22023-05-09浏览数:25044
- 42023-09-25浏览数:18519
- 52020-05-11浏览数:17526