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

oci_error

缺少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

有些系统比较老,可能会报如下错误:

oci_error

则需要下载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版本的。

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                                  |
|                                       |
+---------------------------------------+

results matching ""

    No results matching ""