perl通过ODBC连接GaussDB(DWS)
使用perl语言连接Gaussdb
1 准备
本例使用软件如下
unixODBC-2.3.0
DBI-1.642
DBD-ODBC-1.56
2 安装unixODBC
2.1 上传安装包
使用root用户上传安装包unixODBC-2.3.0.tar.gz到/tmp下
2.2 安装
使用root用户安装,执行如下命令
cd /tmp tar zxvf unixODBC-2.3.0.tar.gz cd unixODBC-2.3.0 ./configure --enable-gui=no(x86编译命令) ./configure --enable-gui=no --build=arm-linux(arm编译命令) make make install |
2.3 测试安装结果
命令行敲击isql,出现如下结果,表示安装成功
2.4 替换驱动程序包
解压GaussDB-Kernel-V300R002C00-SUSE11-64bit-Odbc.tar.gz包
把odbc/lib下的psqlodbcw.la,psqlodbcw.so 这2个文件拷贝到/usr/local/lib路径下。
2.5 添加环境变量
使用omm用户,编辑~/.bashrc文件,追加红色内容
vi ~/.bashrc
export LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH
export ODBCSYSINI=/usr/local/etc
export ODBCINI=/usr/local/etc/odbc.ini
生效环境变量
source ~/.bashrc
2.6 配置数据源
使用root用户,做如下操作。
在“/usr/local/etc/odbcinst.ini”文件中追加以下内容。
vi /usr/local/etc/odbcinst.ini
[GaussMPP]
Driver64=/usr/local/lib/psqlodbcw.so
setup=/usr/local/lib/psqlodbcw.so
在“/usr/local/etc/odbc.ini ”文件中追加以下内容。
vi /usr/local/etc/odbc.ini
[GaussODBC]
Driver=GaussMPP
Servername=10.185.180.123(数据库Server IP)
Database=postgres (数据库名)
Username=odbc (数据库用户名)
Password=Bigdata123@ (数据库用户密码)
Port=25308 (数据库监听端口)
Sslmode=allow
2.7 配置pg_hba.conf文件
gs_guc set -Z coordinator -N all -I all -h "host all all 10.185.180.123/32 sha256"
2.8 重启集群
source /opt/huawei/Bigdata/mppdb/.mppdbgs_profile
cm_ctl stop
cm_ctl start
2.9 创建odbc配置的用户
如果用户已经存在,可以忽略此步。
登录CN
source /opt/huawei/Bigdata/mppdb/.mppdbgs_profile
gsql -d postgres -p 25308 -ar
create user odbc password 'Bigdata123@';
2.10 测试
isql -v GaussODBC
出现如下结果表示配置成功
3 安装DBI
3.1 上传安装包
使用root用户上传安装包DBI-1.642.tar到/tmp下
3.2 安装
使用root用户安装,执行如下命令
cd /tmp tar xvf DBI-1.642.tar cd DBI-1.642 perl Makefile.PL make make install |
4 安装DBD-ODBC
4.1 上传安装包
使用root用户上传安装包DBD-ODBC-1.56.tar.gz到/tmp下
4.2 安装
使用root用户安装,执行如下命令
cd /tmp tar zxvf DBD-ODBC-1.56.tar.gz cd DBD-ODBC-1.56 perl Makefile.PL make make install |
5 Perl脚本连接数据库
脚本:
use DBI;
my $dbh;
$dbh = DBI->connect("dbi:ODBC:GaussODBC","odbc","Bigdata123@",{AutoCommit => 1, PrintError => 1, RaiseError => 0, LongReadLen => 1048576});
my $sth = $dbh->prepare("select current_time");
$sth ->execute();
@tabrow=$sth->fetchrow();
$result=@tabrow[0];
$sth->finish();
$dbh->disconnect();
print $result."\n";
- 点赞
- 收藏
- 关注作者
评论(0)