Linux系统下perl脚本连接OB数据库

Perl脚本怎么连接OB 麻烦提供下例子代码 谢谢

1 个赞

#!/usr/bin/perl -w

use strict;
use DBI;

my $host = “localhost”;
my $driver = “mysql”;
my $database = “RUNOOB”;

my $dsn = “DBI:$driver:database=$database:$host”;
my $userid = “root”;
my $password = “123456”;

连接数据库

my $dbh = DBI->connect($dsn, $userid, $password ) or die $DBI::errstr;
my $sth = $dbh->prepare(“SELECT * FROM Websites”);
$sth->execute();

while ( my @row = $sth->fetchrow_array() )
{
print join(’\t’, @row)."\n";
}

$sth->finish();
$dbh->disconnect();

2 个赞

就当mysql 的方式去连接就好了

1 个赞

谢谢您的回答。但我们采用的是Oracle模式,用mysql驱动去连接OB数据库能成功吗?或者有没有连接ORACLE模式的脚本源码例子看看,谢谢您

这个不能的,oracle 模式找一下对应的SA或者支持人员吧

1 个赞

Oracle模式的来了。没有啥是perl无法做的。
用通用的数据库接口ODBC,先装好ODBC客户端 三个包

rpm -ivh libobclient-<version_no>.rpm
rpm -ivh ob-connector-odbc-<version_no>.rpm
rpm -ivh ob-unixodbc-<version_no>.rpm##这个可以选用UNIXODBC官网版
配好DSN:比如下面这个
[hnltob] #海南某某某通随便定义的一个DSN名称
Description = OCEANBASE ODBC DSN
Driver = OB ##这个要在/etc/odbcinst.ini里配三行
#[OB]
#Description = ODBC for Oceanbase
#Driver = /u01/ob-connector-odbc/lib64/mariadb/libobodbc.so
SERVER=1.29.1.1 #OB的IP
PORT=1306 #OB的端
user=DB_USER@hnlt#hl_cluster20000 #OB的数据库用户@数据库名称(一般与租户名相同)#集群名(对了,这个串很重要哦,要找熟悉Ob数据库部署的人来问清楚)
Password = yourpasswd
database=DB_USER#经尝试,发现用数据库的用户名可以通过
代码很简单
use DBI;
my $dbh = DBI->connect(‘dbi:ODBC:hnltob’) or die DBI->errstr;
my $sth = $dbh->prepare(“SELECT count(*) FROM user_tables”)
or die "Cannot prepare statement: " . $dbh->errstr;
$sth->execute()
or die "Cannot execute statement: " . $sth->errstr;

while (my $row = $sth->fetchrow_arrayref) {
print “@$row\n”;
}
$dbh->disconnect;

1 个赞

感谢分享

学习了