目次

unixODBCとPostgreSQL-ODBCデータソースのクイックセットアップ

2016/02/10
新規作成

ハマった。確認を兼ねてインストールをやってみる。

概要

FreeBSD/amd64 10.2での unixODBCとPostgreSQL-ODBCドライバーインストール手順および接続確認手順。

  1. unixODBCインストール
  2. PostgreSQL-ODBCインストール
  3. odbcinst.ini定義
  4. odbc.ini定義
  5. PostgreSQLに接続確認用データベース定義
  6. 接続確認用データベースにサンプルテーブル定義
  7. isqlクライアントで接続確認用データベースに接続してサンプルテーブルを参照する

参考サイト

インストール

unixODBCインストール

今回はportsからのインストール。

root@amanda:/root # cd /usr/ports/databases/unixODBC
root@amanda:/usr/ports/databases/unixODBC # make; make install

-- 中略 --

root@amanda:/usr/ports/databases/unixODBC # pkg info unixODBC
unixODBC-2.3.4
Name           : unixODBC
Version        : 2.3.4
Installed on   : Wed Feb 10 00:23:01 2016 JST
Origin         : databases/unixODBC
Architecture   : freebsd:10:x86:64
Prefix         : /usr/local
Categories     : databases
Licenses       : LGPL21 and GPLv2
Maintainer     : ports@FreeBSD.org
WWW            : http://www.unixodbc.org/
Comment        : ODBC library suite for Unix
Options        :
        DOCS           : on
Shared Libs provided:
        libodbccr.so.2
        libodbcinst.so.2
        libodbc.so.2
Annotations    :
Flat size      : 2.84MiB
Description    :
From the web site:

What is the unixODBC Project?

The unixODBC Project goals are to develop and promote unixODBC to be the
definitive standard for ODBC on the Linux platform.

What is ODBC?

ODBC is an open specification for providing application developers with
a predictable API with which to access Data Sources. Data Sources include
SQL Servers and any Data Source with an ODBC Driver.

WWW: http://www.unixodbc.org/

root@amanda:/usr/ports/databases/unixODBC #

PostgreSQL-ODBCインストール

同じくportsからインストール。

root@amanda:/root # cd /usr/ports/databases/postgresql-odbc
root@amanda:/usr/ports/databases/postgresql-odbc # make; make install

-- 中略 --

root@amanda:/usr/ports/databases/postgresql-odbc # pkg info postgresql-odbc
postgresql-odbc-09.03.0400
Name           : postgresql-odbc
Version        : 09.03.0400
Installed on   : Wed Feb 10 00:26:14 2016 JST
Origin         : databases/postgresql-odbc
Architecture   : freebsd:10:x86:64
Prefix         : /usr/local
Categories     : databases
Licenses       : LGPL20
Maintainer     : bofh@FreeBSD.org
WWW            : http://www.postgresql.org/ftp/odbc/versions/
Comment        : PostgreSQL ODBC driver
Options        :
        DOCS           : on
        EXAMPLES       : on
Shared Libs required:
        libssl.so.8
        libodbcinst.so.2
        libpq.so.5
Annotations    :
Flat size      : 657KiB
Description    :
The official ODBC driver for connecting to PostgreSQL Database; not a
part of the PostgreSQL Database distribution, though -- developed and
maintained separately.

WWW: http://www.postgresql.org/ftp/odbc/versions/

root@amanda:/usr/ports/databases/postgresql-odbc #

設定

接続確認用データベース定義

PostgreSQL実行アカウントでログインしてユーザ odbcuser と odbcuserをオーナーとするデータベース odbcsample を定義する。

$ createuser odbcuser
$ createdb --encoding=utf8 --owner=odbcuser odbcsample

psqlクライアントで確認用テーブルを定義する。今回は以下のようなテーブルを定義。

root@amanda:/root # psql -h 192.168.1.28 -U odbcuser odbcsample
psql (9.3.10, サーバー 9.5.0)
注意: psql メジャーバージョン 9.3, サーバーバージョン 9.5.
         psql の機能の中で、動作しないものがあるかもしれません。
"help" でヘルプを表示します.
 
odbcsample=> \d sample;
       テーブル "public.sample"|| 修飾語
-----+------------------------+--------
 id  | INTEGER                |
 val | CHARACTER VARYING(100) |
 
odbcsample=> SELECT * FROM sample;
 id |  val
----+--------
  1 | 私は今
  2 | とても
  3 | 眠い。
(3)
 
odbcsample=> \q
root@amanda:/root # 

odbcinst.ini定義

unixODBCで導入される odbcinstコマンドでテンプレートファイルからインストールしてもいいけど面倒なので手書き。
FreeBSDのportsでは /usr/local/etc/odbcinst.ini に作成される。

[PostgreSQL]
Description    = PostgreSQL driver for FreeBSD
Driver         = /usr/local/lib/psqlodbcw.so
UsageCount     = 1

odbc.ini定義

unixODBCで導入される odbcinstコマンドでテンプレートファイルからインストールしてもいいけど面倒なので手書き。
FreeBSDのportsでは /usr/local/etc/odbc.ini に作成される。

[sampledb]
Description         = test sample db
Driver              = PostgreSQL
Trace               = No
TraceFile           = sql.log
Database            = odbcsample
Servername          = 192.168.1.28
UserName            =
Password            =
Port                = 5432
ReadOnly            = No
RowVersioning       = No
ShowSystemTables    = No
ShowOidColumn       = No
FakeOidIndex        = No

確認

必要なら LD_LIBRARY_PATH といった環境変数にライブラリ(ドライバ)の格納パスを明示する。
FreeBSD 10.2では指定しなくても動作した。

isqlクライアントで接続確認

unixODBCで導入される isql コマンドでデータソース名を指定して接続確認する。

$ isql sampledb odbcuser
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> SELECT * FROM sample;
+------------+-----------------------------------------------------------------------------------------------------+
| id         | val                                                                                                 |
+------------+-----------------------------------------------------------------------------------------------------+
| 1          | 私は今                                                                                           |
| 2          | とても                                                                                           |
| 3          | 眠い。                                                                                           |
+------------+-----------------------------------------------------------------------------------------------------+
SQLRowCount RETURNS 3
3 ROWS fetched
SQL> quit
$

odbc.iniに定義された sampledb データソースに接続し、テーブル sample を読み出す事ができた。