psqlODBC 개요
psqlODBC란?
psqlODBC is the official PostgreSQL ODBC Driver. It is released under the Library General Public Licence, or LGPL.
– PostgreSQL ODBC공식 홈페이지 –
psqlODBC는 PostgreSQL의 공식 ODBC 드라이버이며, LGPL 라이센스 정책을 가지고 릴리즈 됩니다.
ODBC(Open DataBase Connectivity)는 마이크로소프트가 만든, 데이터베이스에 접근하기 위한 소프트웨어의 표준 규격으로, ODBC를 이용하여 여러 종류의 데이터베이스를 같은 규격을 가지고 사용할 수 있습니다.
psqlODBC Driver버전과 PostgreSQL 서버 버전 호환성 확인
psqlODBC Driver의 Major 버전은 PostgreSQL 서버 Major 버전과 동일하게 릴리즈 되고 있습니다.
따라서, PostgreSQL 서버 Major 버전에 맞는 최신 버전을 다운로드 해서 사용하시면 됩니다.
현재 13.X 버전이 최신이므로 테스트에서는 PostgreSQL 14 버전과 연동하지만 psqlODBC DRiver는 13.X 버전을 사용하도록 하겠습니다.
psqlODBC Driver 다운로드
아래의 PostgreSQL 공식 홈페이지에서 다운로드 받을 수 있습니다.
https://www.postgresql.org/ftp/odbc/versions/
아래와 같이 ODBC 드라이버를 설치 할 OS에 따라서 다른 형태의 패키지를 선택하여 받을 수 있습니다. Windows는 msi와 같은 인스톨러 형태도 사용할 수 있고, Linux를 포함한 Unix 계열의 운영체제는 src 형태로 받아서 설치할 수 있습니다.

psql ODBC Driver 사용 방법 – Linux(CentOS 7)
사용 실습 환경
CentOS 7.9에서 실습을 해보도록 하겠습니다.
아래와 같은 환경에서 PostgreSQL Driver를 사용하는 방법을 알려드리겠습니다!
OS | CentOS 7.9 |
---|---|
PostgreSQL Version | PostgreSQL 14.2 |
unixODBC Version | 2.3.11 |
psqlODBC Version | 13.02.0000 |
실습
- 실습에 필요한 PostgreSQL Development 패키지를 설치합니다. 이 실습에서는 14.2 버전을 사용하므로, 14.2 버전에 맞는 postgresql14-devel 패키지를 설치 해주도록 하겠습니다.
#PostgreSQL Repository 설치
[root@localhost ~]# yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
#postgresql14-devel 패키지 설치에 필요한 의존성 패키지를 설치하기 위해 아래의 Yum Repository를 설치합니다.
[root@localhost ~]# yum install -y epel-release centos-release-scl-rh
#postgresql14-devel 패키지 설치
[root@localhost ~]# yum install -y postgresql14-devel-14.2-1PGDG.rhel7
2. unixODBC를 다운로드합니다.
작성일 기준 2.3.11 버전이 최신 버전이므로 2.3.11 버전을 기준으로 실습을 진행하겠습니다.
# 저는 wget을 이용하여 받아오도록 하겠습니다.
[root@localhost ~]# wget ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-2.3.11.tar.gz
3. 압축을 해제하고 unixODBC를 설치하고 설치가 잘 되었는지 확인합니다.
[root@localhost ~]# tar xvzf unixODBC-2.3.11.tar.gz
[root@localhost ~]# cd unixODBC-2.3.11[root@localhost unixODBC-2.3.11]# ./configure –prefix=/opensql/unixodbc
[root@localhost unixODBC-2.3.11]# make && make install[root@localhost unixODBC-2.3.11]# cd /opensql/unixodbc/bin
[root@localhost /opensql/unixodbc/bin]# ./odbc_config –version
2.3.11
4. psqlODBC를 다운로드 합니다.
실습 시점의 psqlodbc는 13.02.0000 버전이 최신 버전입니다.
#저는 wget을 이용하여 받아오도록 하겠습니다.
[root@localhost ~]# https://ftp.postgresql.org/pub/odbc/versions/src/psqlodbc-13.02.0000.tar.gz
5. 압축을 해제하고 psqlODBC를 설치 합니다.
실습에 사용할 unixODBC의 위치를 /opensql/unixodbc에 지정해서 설치했기 때문에 psqlODBC도 unixodbc의 위치를 설정하여 설
치합니다.
root 계정이므로, PostgreSQL 패키지의 위치도 지정해줍니다.
[root@localhost ~]# tar xvzf psqlodbc-13.02.0000.tar.gz
[root@localhost ~]# cd psqlodbc-13.02.0000
[root@localhost psqlodbc-13.02.0000]# ./configure –with-unixodbc=/opensql/unixodbc –with-libpq=/usr/pgsql-14/
[root@localhost psqlodbc-13.02.0000]# make && make install
6. psqlODBC를 사용할 수 있도록 unixODBC에 설정합니다.
unixodbc/etc 디렉토리의 odbcinst.ini 파일과 odbc.ini 파일을 수정합니다.
# odbc.ini
# 데이터베이스 연결 정보를 저장합니다.
[root@localhost ~]# vi /opensql/unixodbc/etc/odbc.ini
[myConn]
Description=PostgreSQL ODBC Driver Conn
Driver=psqlODBC
Database=postgres
Servername=localhost
Port=5432
Username=postgres
Password=1234
# odbcinst.ini
# 드라이버에 대한 설정을 저장합니다.
# ODBC를 사용하는 시스템에 따라서 psqlodbcw(Unicode) psqlodbca(ANSI)를 선택 사용합니다.
[root@localhost ~]# vi /opensql/unixodbc/etc/odbcinst.ini
[psqlODBC]
Driver=/usr/local/lib/psqlodbcw.so FileUsage=1
Driver=/usr/local/lib/psqlodbcw.so
FileUsage=1
7. pg_hba.conf를 변경하여 ODBC를 통해 연결할 수 있도록 허용해줍니다.
pg_hba.conf는 PostgreSQL의 data 디렉토리에 있습니다.
저는 PostgreSQL 서버와 unixODBC가 모두 같은 서버에 있으므로 127.0.0.1으로 설정해주었습니다.
# TYPE DATABASE USER ADDRESS METHOD
host all all 127.0.0.1/32 trust
8. unixODBC에서 제공하는 isql을 이용하여 연결을 테스트합니다.
실습에 사용할 java 파일을 생성합니다.
url, user, pwd 등 접속 정보를 변경해서 사용 해주세요!
[root@localhost ~]# cd /opensql/unixodbc/bin
[root@localhost ~]# ./isql myConn
+—————————————+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| echo [string] |
| quit |
| |
+—————————————+
SQL> SELECT * FROM pg_database;
+————–+——————————————————+
| oid | datname | datdba | encoding | datcollate | datctype | datistemplate| datallowconn| datconnlimit| datlastsysoid| datfrozenxid| datminmxid| dattablespace| datacl |
+———–+—————————————————————-+———–+————+——————————————————–
| 14486 | postgres | 10 | 6 | en_US.UTF-8 | en_US.UTF-8 | 0 | 1 | -1 | 14485 | 4973 | 2 | 1663 | {=Tc/postgres,postgres=CTc/postgres,test=Tc/postgres}|
| 1 | template1 | 10 | 6 | en_US.UTF-8 | en_US.UTF-8 | 1 | 1 | -1 | 14485 | 726 | 1 | 1663 | {=c/postgres,postgres=CTc/postgres} |
| 14485 | template0 | 10 | 6 | en_US.UTF-8 | en_US.UTF-8 | 1 | 0 | -1 | 14485 | 726 | 1 | 1663 | {=c/postgres,postgres=CTc/postgres} |
+———–+—————————————————————-+———–+————+——————————————————–
SQLRowCount returns 3
3 rows fetched
psql ODBC Driver 사용 방법 – Windows 10
사용 실습 환경
Windows 10 환경에서 PostgreSQL Driver를 사용하는 방법을 알려드리겠습니다!
아래와 같은 환경에서 실습을 해보도록 하겠습니다.
OS | Windows 10 |
---|---|
PostgreSQL Version | PostgreSQL 14.2 (Linux Server) |
unixODBC Version | 2.3.11 |
psqlODBC Version | 13.02.0000 |
실습
- 실습에 필요한 PostgreSQL Development 패키지를 설치합니다. 실습에 사용할 PostgreSQL 서버는 CentOS 7.9에 구성되어 있습니다. 이 실습에서는 14.2 버전을 사용하므로, 14.2 버전에 맞는 postgresql14-devel 패키지를 설치 해주도록 하겠습니다.
# PostgreSQL Repository 설치
[root@localhost ~]# yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# postgresql14-devel 패키지 설치에 필요한 의존성 패키지를 설치하기 위해 아래의 Yum Repository를 설치합니다.
[root@localhost ~]# yum install -y epel-release centos-release-scl-rh
# postgresql14-devel 패키지 설치
[root@localhost ~]# yum install -y postgresql14-devel-14.2-1PGDG.rhel7
2. pg_hba.conf를 변경하여 ODBC를 통해 연결할 수 있도록 허용해줍니다.
pg_hba.conf는 PostgreSQL의 $PGDATA 디렉토리에 있습니다.
저는 PostgreSQL 서버와 ODBC가 다른 서버에 있으며, 접속할 클라이언트 IP(Windows 서버 IP)는 192.168.184.1 이므로 아래와 같이 설정해주었습니다.
# TYPE DATABASE USER ADDRESS METHOD
host all all 192.168.184.1/32 trust
pg_ctl reload 명령어를 이용하여 pg_hba 파일을 적용해줍니다.
3. msi 형태의 psqlODBC를 다운로드합니다.

4. psqlODBC를 설치합니다.





5. Windows에 기본으로 설치되어 있는 ODBC 데이터 원본(64비트) 프로그램을 관리자 권한으로 실행 합니다.

6. 시스템 DSN에서 추가 버튼을 눌러서 연결 정보를 등록합니다.

7. PostgreSQL 인코딩에 따라서 ANSI 또는 Unicode를 선택합니다.

8. PostgreSQL 접속 정보를 입력하고 Test 버튼을 이용하여 접속을 확인합니다.

오류가 발생 한다면?
연결 오류
FATAL: no pg_hba.conf entry for host “192.168.123.123”, user “postgres”, database “postgres”, no encryption
오류가 발생해요!
답변 내용
pg_hba.conf에 접속 정보를 추가 해주세요!
아래는 TCP 연결을 통해 192.168.123.123 호스트로 부터 온 연결 요청에 대해서 모든 데이터베이스 및 모든 유저로 접속이 가능하고 패스워드는 입력하지 않아도 접속이 가능 하도록 설정하는 예시 입니다.
# TYPE DATABASE USER ADDRESS METHOD
host all all 192.168.123.123/32 trust
psqlODBC에 대한 더욱 자세한 정보는 아래의 공식 홈페이지를 확인 해주시기 바랍니다!
지금까지 ‘(Interface) psqlODBC’에 관해 알아보았습니다
‘PostgreSQL의 (Interface) Python – Psycopg2’을 바로 이어서 확인해보세요!