概述

DBD::ODBC 是 Perl 中的一个数据库驱动,它允许 Perl 程序通过 ODBC(Open Database Connectivity)接口与各种数据库进行交互。
ODBC 是一个标准的数据库访问接口,它使得应用程序能够通过一套通用的API连接到多种不同的数据源,而不需要为每种数据库编写专门的代码。
本文介绍如何通过配置Linux操作系统上的GBase 8a ODBC驱动,通过Perl语言的DBD::ODBC包连接GBase 8a数据库。

环境说明

本文档中安装Perl语言开发环境、ODBC驱动的环境为Linux环境,具体各类与开发调试相关的安装包版本如下,如安装环境或驱动包等与本文档有差异,请根据具体情况进行调整。

操作系统:

Perl DBD-ODBC方式连接南大通用GBase 8a示例_GBase 8a

Perl版本:

Perl DBD-ODBC方式连接南大通用GBase 8a示例_kylin_02

CPAN离线安装包版本:CPAN-2.38.tar.gz

GBase 8a ODBC驱动包版本:GBaseODBC-8.3.81.53-build53.17-redhat7-x86_64.rpm

ODBC驱动环境准备

安装unixODBC和unixODBC-devel

Perl的DBD::ODBC包依赖操作系统的ODBC驱动,以及连接数据库的ODBC驱动程序,因此需要先安装操作系统的ODBC驱动包,本文采用yum源安装方式,前提是安装好Perl开发环境的yum源。

#yum方式安装unixODBC和unixODBC-devel
[root@kylin10-sp1-danji ~]#yum install -y unixODBC.x86_64
...
[root@kylin10-sp1-danji ~]#yum install -y unixODBC-devel.x86_64
...
#执行odbcinst -j验证unixODBC安装正确性
[root@kylin10-sp1-danji ~]odbcinst -j
...

安装GBase8a ODBC驱动

本文中使用的GBase 8a ODBC驱动版本为:GBaseODBC-8.3.81.53-build53.17-redhat7-x86_64.rpm,将驱动上传至Perl开发环境服务器,使用rpm命令安装:

#安装GBase 8a ODBC驱动
[root@kylin10-sp1-danji ~]#rpm -ivh GBaseODBC-8.3.81.53-build53.17-redhat7-x86_64.rpm
...

安装驱动后会在/etc/odbcinst.ini文件中自动加入如下信息:

Perl DBD-ODBC方式连接南大通用GBase 8a示例_bc_03

配置ODBC DSN:

检查odbc配置:

Perl DBD-ODBC方式连接南大通用GBase 8a示例_bc_04

确认系统ODBC DSN的配置文件是:/etc/odbc.ini

编辑/etc/odbc.ini将GBase 8a ODBC连接信息加入:

Perl DBD-ODBC方式连接南大通用GBase 8a示例_GBase 8a_05

[gbase8a]  -- 系统DSN名
Driver = GBase 8a ODBC 8.3 Driver  -- 驱动名称,注意此处需要与/etc/odbcinst.ini中GBase 8a的驱动名称保持一致,否则连接ODBC驱动时会报找不到对应驱动的问题。
DATABASE = test  -- 连接库名
DESCRIPTION = GBase 8a ODBC 8.3 Driver  -- 驱动描述,建议与/etc/odbcinst.ini中GBase 8a的驱动名称保持一致
SERVER = 192.168.56.162   -- GBase 8a管理节点IP地址
PORT = 5258  -- GBase 8a管理节点服务端口
UID = root  -- 连接GBase 8a数据库用户
PASSWORD = xxxxxx -- 连接口令
注意:更多连接参数说明请参考《GBase 8a 程序员手册ODBC篇》介绍,包括负载均衡和高可用连接方式配置等

测试GBase8a ODBC驱动正确安装

执行 isql gbase8a -v,使用isql连接GBase8a数据库,测试连接正确性:

Perl DBD-ODBC方式连接南大通用GBase 8a示例_kylin_06

Perl开发环境准备

安装CPAN

CPAN(Comprehensive Perl Archive Network)是Perl编程语言的官方模块存储库,提供超过20万个开源模块资源,可快速扩展Perl语言功能。它集成了模块的发布、下载、安装及管理工具,是Perl开发者依赖的核心生态系统。
本文档的Perl开发环境准备,采用CPAN安装DBD::ODBC模块,解决模块安装依赖等问题,因此首先进行CPAN模块安装。
CPAN模块安装采用下载安装包,离线编译安装方式。首先登录网站:https://metacpan.org/pod/CPAN
选择CPAN安装包,点击Download,下载CPAN安装包:CPAN-2.38.tar.gz

Perl DBD-ODBC方式连接南大通用GBase 8a示例_kylin_07

将安装包上传Perl开发环境服务器,执行如下指令:

#解压安装包
[root@kylin10-sp1-danji software]#tar -xvf CPAN-2.38.tar.gz

#进入安装包目录
[root@kylin10-sp1-danji software]#cd CPAN-2.38

编译方式安装CPAN:

#编译方式安装CPAN
[root@kylin10-sp1-danji CPAN-2.38]# perl Makefile.PL
...
[root@kylin10-sp1-danji CPAN-2.38]# make
...
[root@kylin10-sp1-danji CPAN-2.38]# make install
...

安装DBD::ODBC

使用CPAN安装DBD::ODBC,需要开发环境服务器可以连接外网,cpan会自动进行仓库连接环境,下载包依赖等配置

#安装DBD::ODBC
[root@kylin10-sp1-danji CPAN-2.38]# cpan DBD::ODBC
...

编写Perl样例代码连接GBase8a

准备GBase 8a库内测试表,登录数据库:

-- 创建测试表
gbase> create table test_perl (id varchar(10), name varchar(20));

-- 插入测试数据
gbase> insert into test_perl values ('0001', 'sunyunji'),('0002', 'kangzhiyong');

编写Perl样例测试代码:

#!/usr/bin/perl
use strict;
use warnings;
use DBI;

# 连接数据库
my $dsn = "dbi:ODBC:Driver={GBase 8a ODBC 8.3 Driver};Server=192.168.56.162;Database=test;Port=5258";
my $dbh = DBI->connect(
    $dsn,
    "root",
    "xxxxxxxx",
    {
        PrintError => 1,
        RaiseError => 1,
        AutoCommit => 1
    }
) or die "无法连接数据库: " . $DBI::errstr;

# 执行查询
my $sth = $dbh->prepare("SELECT * FROM test_perl limit 10");
$sth->execute();

# 获取并处理结果
while (my $row = $sth->fetchrow_hashref) {
    print "ID: $row->{id}, Name: $row->{name}\n";  # 根据实际表结构调整字段名
}

# 关闭语句句柄和数据库连接
$sth->finish();
$dbh->disconnect();

执行样例代码:

Perl DBD-ODBC方式连接南大通用GBase 8a示例_kylin_08