PGSQL ODBC安装与配置
此教程将带领大家如何在Centos服务器上安装配置Postgresql的ODBC驱动,此操作的前提是服务器上的UnixODBC已经正确安装。
一、安装依赖postgresql15-devel
1.1 在线方式安装postgresql15-devel
1. 查看系统提供版本
[root@k8s-node10 psqlodbc-13.02.0000]# yum list | grep postgresql-devel
postgresql-devel.x86_64 9.2.24-8.el7_9 @updates
postgresql-devel.i686 9.2.24-8.el7_9 updates
soci-postgresql-devel.x86_64 4.0.0-4.el7 epel
以CentosOS7 为例(其他系统版本请参考官方网址:https://www.postgresql.org/download/linux/redhat/), 自身自带的postgresql的源的版本比较老(如上述命令执行结果:为9.2版本),如果需要安装新版的ODBC驱动, 则需要安装Postgresql最新的yum源
2. 安装Postgresql15的yum 源
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
3. 安装postgresql15-devel
yum install postgresql15-devel
4. 可能遇到的问题
在第3步安装时,可能还会缺少一些依赖,遇到一些报错,常见的报错信息如下:
1. Error: Package: postgresql15-devel-15.5-1PGDG.rhel7.x86 64 (pgdg15)Requires: llvm-toolset-7-clang >= 4.0.1
缺少llvm-toolset-7库,需要先安装,安装步骤如下:
yum install -y centos-release-scl-rh llvm5*
yum install llvm-toolset-7
yum install llvm
2. psqlodbc.h:112:10: fatal error: sql.h No such file or directory
缺少unixODBC-devel包,执行如下命令安装:
yum install unixODBC-devel
1.2 离线方式安装postgresql15-devel
有些服务器如果没有外网,则可以采用离线安装方式(https://download.postgresql.org/pub/repos/yum/15/redhat/rhel-7.7-x86_64/)
下载地址如下:
# 下载文件
wget https://download.postgresql.org/pub/repos/yum/15/redhat/rhel-7.7-x86_64/postgresql15-libs-15.0-1PGDG.rhel7.x86_64.rpm --no-check-certificate
wget https://download.postgresql.org/pub/repos/yum/15/redhat/rhel-7.7-x86_64/postgresql15-15.0-1PGDG.rhel7.x86_64.rpm --no-check-certificate
wget https://download.postgresql.org/pub/repos/yum/15/redhat/rhel-7.7-x86_64/postgresql15-devel-15.0-1PGDG.rhel7.x86_64.rpm --no-check-certificate
下载完毕后上传到linux服务器,执行如下命令安装
rpm -ivh postgresql15-libs-15.0-1PGDG.rhel7.x86_64.rpm postgresql15-15.0-1PGDG.rhel7.x86_64.rpm postgresql15-devel-15.0-1PGDG.rhel7.x86_64.rpm
[!Tip] 因为涉及到循环依赖,所以需要3个包一起安装,不要分开执行
可能遇到的报错
Error: Faild dependencies
有些系统比较老,可能会报如下错误:
则需要下载libzstd和llvm5的库,下载地址和操作如下:
### 下载
wget https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/l/libzstd-1.5.5-1.el7.x86_64.rpm --no-check-certificate
wget https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/l/llvm5.0-devel-5.0.1-7.el7.x86_64.rpm --no-check-certificate
wget https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/l/llvm5.0-5.0.1-7.el7.x86_64.rpm --no-check-certificate
wget https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/l/llvm5.0-libs-5.0.1-7.el7.x86_64.rpm --no-check-certificate
## 安装
rpm -ivh libzstd-1.5.2-1.el7.x86_64.rpm
rpm -ivh llvm5*
[!Tip] 上述wget 命令中的链接可能因为软件版本的更新会失效,请在浏览器中输入https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/ 查看相应软件的最新地址。
二、下载安装PGSQL的ODBC驱动
1、官网地址:
官网下载地址如下,选择64位的windows平台的相应版本的ODBC驱动包,如最新的安装包是13.02版本的。
psqlodbc_13_02_0000-x64.zip的下载地址:https://ftp.postgresql.org/pub/odbc/versions/src/psqlodbc-13.02.0000.tar.gz
2、下载安装包
[root@k8s-node10 ~]# cd /home/software
[root@k8s-node10 ~]# wget https://ftp.postgresql.org/pub/odbc/versions/src/psqlodbc-13.02.0000.tar.gz --no-check-certificate
3、解压并安装
# rpm 进行安装依赖
[root@k8s-node10 software]# tar -xzvf psqlodbc-13.02.0000.tar.gz
# rpm 进行安装ODBC驱动
[root@k8s-node10 software]# cd psqlodbc-13.02.0000/
[root@k8s-node2 psqlodbc-13.02.0000]#./configure --with-libpq=/usr/pgsql-15 --with-unixodbc=/usr/local/unixODBC --prefix=/usr/local/psqlodbc
[root@k8s-node2 psqlodbc-13.02.0000]# make -j8
[root@k8s-node2 psqlodbc-13.02.0000]# make install
[!TIP] ./configure 参数说明
- --with-libpq 是pg_config的路径,需要先按照上述步骤安装pogresql15-devel工具包
- --with-unixodbc 是odbc_config的路径,执行命令odbc_config --prefix 可以查看
- --prefix 指的是pogresql的odbc驱动将要被安装的目标路径
4、添加驱动
在unixODBC的odbcinst.ini文件中添加Pg的ODBC驱动信息,如下所示
[PostgreSQL]
Description=ODBC for PostgreSQL
Driver=/usr/local/psqlodbc/lib/psqlodbcw.so
Setup=/usr/local/psqlodbc/lib/psqlodbcw.so
[!WARNING] unixODBC是按照我上文的步骤安装的话odbcinst.ini文件和odbc.ini文件在/ecc/目录下,如果是自行安装,请自行编辑odbcinst.ini文件
三、配置PGSQL的ODBC数据源
1、新建系统DSN
编辑unixODBC目录下的odbc.ini文件,在里面添加类似如下内容
[PGSQL-125]
Description=DataSource for PG-125
Driver=Postgresql
Database=xdb
Servername=localhost
Port=5432
UserName=user
Password=password
说明:
MSQL-BASE:是数据源的名称,可以随便取
Description: 描述信息,随便写
Driver:驱动名称,填写odbcinst.ini文件中的Postgresql的驱动名称
Servername:数据库服务器的地址,eg:192.168.0.125
Port=5432: 数据库端口
UserName:数据库的用户名
Password:数据库密码
2、验证DSN是否能够正常连接
执行如下命令:
[root@k8s-node2 etc]# isql -v PGSQL-125
如果能够正确输出如下,则说明配置正确
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| echo [string] |
| quit |
| |
+---------------------------------------+