Perl语言通过ODBC连接梧桐云原生分析型数据库
1、配置ODBC
1.1 ODBC介绍
ODBC(Open Database Connectivity)是一种标准的数据库访问接口,它可以让不同的应用程序通过统一的方式连接和操作各种类型的数据库。
1.2 通过ODBC访问梧桐云原生分析型数据库
1.2.1 部署ODBC需要的rpm包
yum install -y unixODBC.x86_64
yum install -y postgresql-odbc.x86_64
1.2.2 修改配置文件
向ODBC添加梧桐数据库驱动:
vim /etc/odbc.ini
[WTDB] – DSN名称
Driver = PostgreSQL – ODBC驱动驱动程序
Description = 梧桐数据库DSN --描述
Servername = xxx.xxx.xxx.xxx – 服务器IP
Database = postgres --要使用的数据库
Username = xxxxxxxx --用户名称
Password = ******** --密码
Port = xxxx --端口
ReadOnly = No --是否只读
vim /etc/odbcinst.ini
[WTDB] --驱动名称
Description=My ODBC Driver --描述
Driver=/usr/lib/libmydriver.so --驱动程序
Setup=/usr/lib/libmydriver.so
FileUsage=1
1.2.3 连接测试
isql WuTongDB -v
1.3 解决同时使用odbc与psql工具环境冲突问题
odbc与psql工具同时使用时,会引起环境变量冲突,导致odbc与psql无法同时使用,如何解决该问题,具体如下:
1、系统ODBC库文件指向梧桐提供的库文件
cd /lib64
ln -s /usr/local/wutong/WuTongDB/lib/libcrypto.so.1.0.0 libcrypto.so.1.0.0
ln -s /usr/local/wutong/WuTongDB/lib/libssl.so.1.0.0 libssl.so.1.0.0
2、不使用梧桐提供的环境变量,实现psql连接数据库
使用时写全路径:
alias psql=/usr/local/wutong/WuTongDB/bin/psql 不想使用全路径加这个,可以配置到环境变量中
/usr/local/wutong/WuTongDB/bin/psql -h XX.X.X.X -U xxxxx -d postgres
注意:在linux环境下,如果同时使用ODBC和psql,不能够使用source WuTongDB_path.sh
1.4 如何避免ODBC连接采用票据认证,而不采用用户名密码认证
1、关闭GSSAPI认证
export PGGSSENCMODE=disable
2、使用ODBC连接(用户密码连接)
isql -v
2、Perl脚本通过ODBC连接梧桐云原生分析型数据库
2.1 Perl介绍
Perl是一种相当灵活的程序编程语言,现有的许有程序都是使用它进行编程的。它的优点之一就是无需自己编写编码,你就能利用许多增加的模块,创建新的功能。程序利用这些模块的编码,而程序员就能集中开发编码,无需担心大量的工作量。但是,你必须在Perl程序运行之前安装任何特定的模块。
2.2 安装必要的Perl模块
在Perl中,要使用ODBC连接数据库,通常需要安装DBI和DBD::ODBC模块。
2.2.1 安装Perl DBI模块
cpan -i DBI
2.2.2 安装DBD::ODBC模块
cpan -i DBD::ODBC
在安装DBD::ODBC时,可能需要你提供数据库驱动的路径,以及其他ODBC相关的配置信息。
2.3 Perl通过ODBC连接梧桐云原生分析型数据库
2.3.1 编写ODBC连接梧桐云原生分析型数据库Perl脚本
可以使用以下Perl脚本来访问梧桐数据库:
vi myscript.pl
use strict;
use warnings;
use DBI;
#数据库连接字符串
my $dsn = " WTDB";
my $user = “user1”;
my $password = "**";
# 连接数据库
my dbh=DBI−>connect(dbh = DBI->connect(dbh=DBI−>connect(dsn, $user, $password, {
PrintError => 0,
RaiseError => 1
}) or die "Cannot connect to database: " . DBI->errstr;
# 执行查询
my $sth = $dbh->prepare(“SELECT now()”);
$sth->execute() or die “SQL Error: " . $sth->errstr;
# 获取结果
while (my @row = $sth->fetchrow_array()) {
print join(”, ", @row), “\n”;
}
# 释放资源
$sth->finish();
$dbh->disconnect();
2.3.2 测试验证
使用以下命令运行Perl脚本:
perl myscript.pl
运行结果:2024-06-16 14:21:57.278648
3、Perl脚本编写注意事项
常用的变量名命名方法:
$dsn 驱动程序对象的句柄
$dbh 一个数据库对象的句柄
$sth 一个语句或者一个查询对象的句柄
$h 通用的句柄 ($dbh, $sth, 或 $drh),依赖于上下文
$rc 操作代码返回的布什值(true 或 false)
$rv 操作代码返回的整数值
@ary 查询返回的一行值的数组(列表)
$rows 操作代码返回的行数值
$fh 文件句柄
undef NULL 值表示未定义
%attr 引用属性的哈希值并传到方法上
1290

被折叠的 条评论
为什么被折叠?



