在postgresql发行版中只包含两个客户端接口: libpq 和 ecpg
- libpq is included because it is the primary c language interface, and because many other client interfaces are built on top of it.
- ecpg is included because it depends on the server-side sql grammar, and is therefore sensitive to changes in postgresql itself.
其他语言客户端接口:
name | language | comments | website |
---|---|---|---|
dbd::pg | perl | perl dbi driver | |
jdbc | java | type 4 jdbc driver | |
libpqxx | c | c interface | |
node-postgres | javascript | node.js driver | |
npgsql | .net | .net data provider | |
pgtcl | tcl | - | |
pgtclng | tcl | - | |
pq | go | pure go driver for go’s database/sql | |
psqlodbc | odbc | odbc driver | |
psycopg | python | db api 2.0-compliant |
-
什么是 perl?
我也不懂,参考后面链接,感觉说的挺详细: -
dbi 模块
dbi 英文全称:database independent interface,中文称为数据库独立接口,是 perl 编程语言的数据库访问模块。
dbi 作为 perl 语言中和数据库进行通讯的标准接口,它定义了一系列的方法,变量和常量,提供一个和具体数据库平台无关的数据库接口。
dbi 和具体数据库平台无关,我们可以将其应用在postgresql, oracle, mysql, db2 或 informix 等数据库中。
-
perl连接数据库一个应用场景
如果研究过oracle到postgresql数据库的迁移,应该会了解一个迁移工具ora2pg,ora2pg就是使用perl语言编写的,使用ora2pg进行迁移的过程中,就会用到 dbd::oracle 连接oracle数据库,dbd::pg 连接postgresql数据库。
- perl
一般linux系统默认都会安装perl,我的实验环境的centos 7,默认安装的perl是v5.16.3版本(命令:perl -v),如果没有安装,可以使用命令yum install perl -y进行安装,或者去官方网站()下载源码安装。
m6米乐安卓版下载官网提示:目前版本是5.34.0,如果perl的版本早于5.8.3,可能无法运行最新版本的 cpan 模块。
perl-5.34.0源码包下载地址:
# 源码编译安装
[root@pgtest3 ~]# cd /enmo/soft/
[root@pgtest3 soft]# tar -zxvf perl-5.34.0.tar.gz
[root@pgtest3 soft]# cd perl-5.34.0
[root@pgtest3 perl-5.34.0]# mkdir /enmo/app/perl-5.34.0
[root@pgtest3 perl-5.34.0]# ln -s /enmo/app/perl-5.34.0 /enmo/app/perl
[root@pgtest3 perl-5.34.0]# ./configure -des -dprefix=/enmo/app/perl
[root@pgtest3 perl-5.34.0]# make
[root@pgtest3 perl-5.34.0]# make test # 这个过程挺漫长(elapsed: 714 sec)
[root@pgtest3 perl-5.34.0]# make install
# 配置环境变量
[root@pgtest3 ~]# sed -i "s;:\$path:;:/enmo/app/perl/bin:\$path:;g" /etc/profile
[root@pgtest3 ~]# source /etc/profile
# 查看版本
[root@pgtest3 ~]# perl -v
this is perl 5, version 34, subversion 0 (v5.34.0) built for x86_64-linux
米乐app官网下载 copyright 1987-2021, larry wall
- dbd::pg
linux系统中也自带了dbd::pg(版本:2.19.3),但是默认不会安装,使用命令yum install perl-dbd-pg -y进行安装,或者去perl的模块仓库网站()下载源码(当前最新:dbd-pg-3.15.0)安装,但是要打开这个网站得需要点运气,如果像我一样运气不好的话,可以点这个进去找找。
dbi源码包下载地址:
dbd-pg-3.15.0 源码包下载地址:
# 安装 dbd::pg 之前需要先安装 dbi
[root@pgtest3 soft]# tar -zxvf dbi-1.643.tar.gz
[root@pgtest3 soft]# cd dbi-1.643
[root@pgtest3 dbi-1.643]# perl makefile.pl
[root@pgtest3 dbi-1.643]# make
[root@pgtest3 dbi-1.643]# make test
[root@pgtest3 dbi-1.643]# make install
# 安装 dbd::pg
[root@pgtest3 ~]# cd /enmo/soft/
[root@pgtest3 soft]# tar -zxvf dbd-pg-3.15.0.tar.gz
[root@pgtest3 soft]# cd dbd-pg-3.15.0
[root@pgtest3 soft]# perl makefile.pl
[root@pgtest3 soft]# make && make install
# 查看已安装的模块
[root@pgtest3 ~]# vi check.pl
#!/usr/bin/perl
use strict;
use extutils::installed;
my $inst=extutils::installed->new();
my @modules = $inst->modules();
foreach(@modules){
my $ver = $inst->version($_) || "???";
printf("%-12s -- %s\n",$_,$ver);
}
exit;
[root@pgtest3 ~]# perl check.pl
dbd::pg -- 3.15.0
dbi -- 1.643
perl -- 5.34.0
- postgresql
参考文档:
# 编辑脚本
[root@pgtest3 ~]# vi perl_conn_pg.pl
#! /usr/bin/perl
use strict;
use data::dumper; # 用于select返回数据集
use dbi;
# 连接数据库,autocommit(default:1)表示是否自动提交,如果设置为0,不会自动提交,通过 $dbh->commit 来提交,或 $dbh->rollback 来回滚
# $dbh = dbi->connect("dbi:pg:dbname=$dbname;host=$host;port=$port;options=$options", $username, $password, {autocommit => 0, raiseerror => 1, printerror => 0});
my $dbh=dbi->connect("dbi:pg:dbname=postgres;host=192.168.58.10;port=5432","postgres","postgres",{ autocommit => 0, raiseerror => 1 }) or die "can''t connect!";
# 查询
my $sth = $dbh->prepare("select inet_server_addr(),pg_is_in_recovery(),current_database(),current_user" )or die "syntax error:$!\n";
# 执行
$sth->execute();
# 获取查询结果集
while(my $row=$sth->fetchrow_hashref())
{
print dumper($row);
}
# 关闭数据库
$dbh->disconnect();
# 执行脚本
[root@pgtest3 ~]# perl perl_conn_pg.pl
$var1 = {
'current_database' => 'postgres',
'current_user' => 'postgres',
'pg_is_in_recovery' => 0,
'inet_server_addr' => '192.168.58.10'
};
dbi 的使用文档:
dbd::pg 的使用文档:
太难了,有需要再研究更新吧。
最后修改时间:2021-11-06 22:24:05
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【米乐app官网下载的版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。