ODBCドライバの利用方法について説明します。
ODBCドライバを利用したアプリケーションは、ODBCインタフェースに対応したAccess、Excelなどのアプリケーション、およびVisual Basicなどのツールを利用して開発できます。
開発する環境については、これらのODBCインタフェースに対応したプログラム言語のマニュアルを参照してください。
FUJITSU Enterprise Postgresでは、ODBC 3.5をサポートしています。
FUJITSU Enterprise PostgresでODBCドライバを使用したアプリケーションを使用するためには、ODBCドライバであるPsqlODBCのセットアップが必要です。PsqlODBCはFUJITSU Enterprise Postgresのクライアントパッケージに含まれます。
ODBCドライバの登録と、ODBCデータソースの登録方法を説明します。
LinuxプラットフォームでODBCドライバを使用する場合、以下の手順でODBCドライバを登録してください。
ODBCドライバマネージャ(unixODBC)およびlibtoolのインストール
参考
FUJITSU Enterprise Postgresでは、unixODBCのVersion 2.3以降をサポートしています。
以下のサイトから、unixODBCをダウンロードしてご利用ください。
http://www.unixodbc.org/
unixODBCを実行するために、libtool 2.2.6以降のインストールが必要です。
以下のサイトから、libtoolをダウンロードしてご利用ください。
http://www.gnu.org/software/libtool/
[注意]
ODBCドライバの動作についてはサポートします。
unixODBCの動作についてはサポート対象外です。
ODBCドライバの登録
ODBCドライバマネージャ(unixODBC)のodbcinst.iniファイルを編集します。
参考
[odbcinst.iniファイルの格納先]
<unixODBCインストールディレクトリ>/etc/odbcinst.ini
以下の内容を設定してください。
定義名 | 意味 | 設定値 |
---|---|---|
[ドライバ名] | ODBCドライバの名前 | ODBCドライバの名前を設定します。 アプリケーションの種類に応じて、以下の2つの文字列を選択し、これらを空白なしで連結した文字列を“[ ]”で囲んで設定してください。
例: 32ビットアプリケーションで、アプリケーションが使用する符号化方式がUnicodeの場合 |
Description | ODBCドライバの説明 | カレントのデータソースの補足の説明を指定します。任意の説明を設定してください。 |
Driver | ODBCドライバのパス(32ビット) | ODBCドライバ(32ビット)のパスを設定します。
|
Driver64 | ODBCドライバのパス(64ビット) | ODBCドライバ(64ビット)のパスを設定します。32ビットのオペレーティングシステムを利用している場合設定は不要です。
|
FileUsage | データソースファイルの使用方法 | 1を指定してください。 |
Threading | コネクションプーリングのアトミック性の確保レベル | 2を指定してください。 |
例
例内の“<x>”は、製品のバージョンレベルを示します。
32ビット版Linux上で32ビットのODBCドライバを使用する場合の設定例
[FUJITSU Enterprise Postgres10unicode]
Description = FUJITSU Enterprise Postgres 10 unicode driver
Driver = /opt/fsepv<x>client32/odbc/lib/psqlodbcw.so
FileUsage = 1
Threading = 2
64ビット版Linux上で64ビットのODBCドライバを使用する場合の設定例
[FUJITSU Enterprise Postgres10x64unicode]
Description = FUJITSU Enterprise Postgres 10 x64 unicode driver
Driver64 = /opt/fsepv<x>client64/odbc/lib/psqlodbcw.so
FileUsage = 1
Threading = 2
ODBCデータソースの登録方法を説明します。Windows(R)プラットフォームで、ODBCデータソースを登録する方法は以下の2通りの方法があります。
GUIを使用して登録する
[ODBC データソース アドミニストレーター]を起動し、ODBCデータソースを登録する方法を説明します。
ODBCデータソースの登録は、以下の手順で行います。
[ODBC データ ソースアドミニストレーター]を起動します。
コントロールパネルの[管理ツール]から“ODBCデータソース(32bit)”(注1) または“ODBCデータソース(64bit)”(注1)を選択してください。
注1) Windows(R)のバージョンによっては、“データ ソース(ODBC)”と表示されます。
ODBCデータソースを現在のユーザーのみが使用する場合、[ユーザー DSN]タブを選択してください。同一のコンピュータを利用するすべてのユーザーが利用する場合は、[システム DSN]タブを選択してください。
[追加]ボタンをクリックします。
[データ ソースの新規作成]画面で、使用可能なODBCドライバの一覧の中から、以下のいずれかのドライバを選択し、[完了]ボタンをクリックします。
PostgreSQL Unicode
アプリケーションの符号化方式として、Unicodeを使用する場合に選択します。
PostgreSQL ANSI
アプリケーションの符号化方式として、Unicode以外を使用する場合に選択します。
[PostgreSQL ANSI ODBC Driver (psqlODBC) Setup]画面が表示されますので、必要な項目を入力または選択します。また、必要な項目をすべて入力または選択したあと、[Save]ボタンをクリックします。
以下の内容を設定してください。
定義名 | 設定値 |
---|---|
Data Source | ODBCドライバマネージャに登録するデータソース名を指定します。アプリケーションはここで指定した名前を選択してPostgreSQLのデータベースに接続します。本パラメータは省略できません。 32バイト以内の以下の文字が指定できます。
|
Description | カレントのデータソースの補足の説明を指定します。255バイト以内の文字が指定できます。
|
Database | 接続先のデータベース名を指定します。 |
SSLMode | 通信を暗号化する場合に指定してください。デフォルトは無効に設定されています。 SSLModeの設定値は以下のとおりです。
|
Server | 接続したいデータベースが存在するデータベースサーバのホスト名を18バイト以内で指定します。 本パラメータは省略できません。 |
Port | リモートアクセスで使用するポート番号を指定します。 省略値は、5432です。 |
Username(注2) | データベースにアクセスするユーザーを指定します。 |
Password(注2) | データベースにアクセスするユーザーのパスワードを指定します。 |
注1) “verify-ca”または“verify-full”を指定する場合、CA証明書ファイルをOSのシステム環境変数PGSSLROOTCERTで以下のように指定してください。
例)
変数名:PGSSLROOTCERT 変数値:CA証明書ファイル
注2) セキュリティのため、“Username”および“Password”は、アプリケーションで指定してください。
コマンドを使用して登録する
コマンドを使用してODBCデータソースを登録する方法を説明します。
ODBCデータソースの登録には、Microsoft社が提供する以下のツールを利用します。
ODBCConf.exe
Add-OdbcDsn (Windows(R) 8.1以降またはWindows Server(R) 2012以降で使用できます。)
ツールの使用方法の詳細は、Microsoft社のMSDNライブラリを参照してください。
ODBCConf.exeはWindows(R)のすべてのプラットホームでサポートされているツールです。
ODBCConf.exe /A {データソースタイプ "ODBCドライバ名" "オプション名=値[|オプション名=値…]"} [/Lv ファイル名]
指定形式の詳細とパラメータについては、Microsoft社のMSDNライブラリを参照してください。
以下の内容を設定してください。
定義名 | 設定値 |
---|---|
データソースタイプ | データソースのタイプを指定します。
ポイント “CONFIGSYSDSN”を指定する場合、管理者モードのコマンドプロンプトでコマンドを実行する必要があります。 |
ODBCドライバ名 | 使用するODBCドライバ名を指定します。以下のいずれかを指定してください。
|
オプション名 | 以下の項目の設定が必要です。
以下の項目は、任意で指定してください。
|
ファイル名 | データソースを作成するとき、プロセス情報をファイルに出力することができます。省略可能です。 |
例
ODBCConf.exe /A {CONFIGSYSDSN "PostgreSQL Unicode(x64)" "DSN=odbcconf1|Servername=sv1|Port=5432|Database=db01|SSLMode=verify-ca"} /Lv log.txt
ポイント
セキュリティのため、ユーザーID(UID)およびパスワード(Password)は、アプリケーションで指定してください。
Add-OdbcDsnは、PowerShellコマンドインタフェースで使用します。
Add-OdbcDsn データソース名 -DriverName "ODBCドライバ名" -DsnType データソースタイプ -Platform OSアーキテクチャ -SetPropertyValue @("オプション名=値" [,"オプション名=値"…])
指定形式の詳細とパラメータについては、Microsoft社のMSDNライブラリを参照してください。
以下の内容を設定してください。
定義名 | 設定値 |
---|---|
データソース名 | データソース名として任意の名前を指定できます。 |
ODBCドライバ名 | 使用するODBCドライバ名を指定します。以下のいずれかを指定してください。
|
データソースタイプ | データソースのタイプを指定します。
ポイント “System”を指定する場合、管理者モードのコマンドプロンプトでコマンドを実行する必要があります。 |
OSアーキテクチャ | システムのOSアーキテクチャを指定します。
|
オプション名 | 以下の項目の設定が必要です。
以下の項目は、任意で指定してください。
ポイント Add-OdbcDsnを利用する場合、オプション名として“UID”、“Password”を設定できません。ODBCConf.exeを利用する場合だけ利用できます。 |
例
Add-OdbcDsn odbcps1 -DriverName "PostgreSQL Unicode" -DsnType System -Platform 32-bit -SetPropertyValue @("Servername=sv1", "Port=5432", "Database=db01","SSLMode=verify-ca")
LinuxプラットフォームでODBCデータソースを登録する方法を説明します。
データソースの登録
データソースの定義ファイルodbc.iniを編集します。
参考
[ODBCドライバマネージャ(unixODBC)のインストールディレクトリにあるファイルを編集する]
<unixODBCインストールディレクトリ>/etc/odbc.ini
または
[HOMEディレクトリ配下に新しいファイルを作成する]
~/.odbc.ini
ポイント
<unixODBCインストールディレクトリ>配下を編集した場合、当該システムにログインするユーザーすべての共通設定として使用されます。HOMEディレクトリ(~/)配下に作成した場合、当該ユーザーのみが使用できる設定として使用されます。
以下の内容を設定してください。
定義名 | 設定値 |
---|---|
[データソース名] | ODBCデータソースに付与する名前を設定します。 |
Description | ODBCデータソース定義の説明を設定します。任意の説明を設定してください。 |
Driver | ODBCドライバの名前を設定します。この値は変更しないでください。 アプリケーションの種類に応じて、以下の2つの文字列を選択し、これらを空白なしで連結した文字列を設定してください。
例: 32ビットアプリケーションで、アプリケーションが使用する符号化方式がUnicodeの場合 “FUJITSU Enterprise Postgres<FUJITSU Enterprise Postgres クライアント機能のバージョンレベル>unicode” |
Database | 接続するデータベース名を指定します。 |
Servername | データベースサーバのホスト名を指定します。 |
Username | データベースに接続するユーザーIDを指定します。 |
Password | データベースに接続するユーザーのパスワードを指定します。 |
Port | データベースサーバのポート番号を指定します。 省略した場合は、5432となります。 |
SSLMode | 通信の暗号化方法を指定します。SSLModeの設定値は以下のとおりです。
|
ReadOnly | データベースを読み込み専用にするかどうかを指定します。
|
注) “verify-ca”または“verify-full”を指定する場合、CA証明書ファイルを環境変数PGSSLROOTCERTで以下のように指定してください。
例)
export PGSSLROOTCERT=<CA証明書ファイルの格納ディレクトリ>/root.crt
Linux(32ビット)の場合
[MyDataSource] Description = FUJITSU Enterprise Postgres Driver = FUJITSU Enterprise Postgres10ansi Database = db01 Servername = sv1 Port = 5432 ReadOnly = 0
ポイント
セキュリティのため、ユーザーID(UserName)およびパスワード(Password)は、アプリケーションで指定してください。
環境変数の設定
ODBCドライバを使用するアプリケーションを実行するためには、環境変数LD_LIBRARY_PATHに、以下をすべて設定してください。
<FUJITSU Enterprise Postgres クライアント機能のインストールディレクトリ>/lib
<unixODBCのインストールディレクトリ(注)>/lib
<libtoolのインストールディレクトリ(注)>/lib
注: unixODBCとlibtoolについて、インストールディレクトリを指定せずにインストールした場合は、/usr/localにインストールされます。
アプリケーション実行環境の言語の設定、およびアプリケーションが使用する符号化方式の設定について説明します。
アプリケーション実行環境の言語設定は、データベースサーバのメッセージロケールの設定と合わせる必要があります。
アプリケーションが出力するメッセージの中には、アプリケーション側のメッセージに、データベースサーバから送られたメッセージを埋め込む場合があります。このとき、アプリケーション側のメッセージは、アプリケーション側のメッセージロケールに従い、データベースサーバから送られるメッセージは、データベースサーバ側のメッセージロケールに従います。そのため、両方のメッセージロケールが一致していない場合には、言語や符号化方式が混在します。符号化方式が一致しない場合には、文字化けが発生します。
Linuxの場合
プロセスのロケールのLC_MESSAGESカテゴリが、データベースサーバのメッセージロケールと一致するように設定してください。環境変数を用いるなどいくつかの方法があります。詳細は、setlocale関数のオペレーティングシステムに付属するドキュメントを参照してください。
例
setlocale関数で“ja_JP.UTF-8”の指定例
setlocale(LC_ALL,"ja_JP.UTF-8");
LC_ALLに指定することにより、LC_MESSAGEカテゴリに設定を適用しています。
Windows(R)の場合
OSのロケールをデータベースサーバのメッセージロケールの設定と合わせてください。
アプリケーションに埋め込まれ、データベースに渡される符号化方式と、実行時のクライアント符号化方式の設定は同じにしてください。データベースサーバ側で正しく符号化方式を変換できなくなります。
アプリケーションの符号化方式は、以下のいずれかの方法で設定してください。
実行時の環境変数PGCLIENTENCODINGに設定する。
接続文字列のclient_encodingキーワードに設定する。
PQsetClientEncoding関数を使って設定する。
参照
設定できる符号化方式を表す文字列は、“PostgreSQL文書”の“サーバの管理”の“サポートされる文字セット”を参照してください。
例えば、Unicode、8ビットの場合は、“UTF8”という文字列を設定します。
例
環境変数“PGCLIENTENCODING”に設定する場合
クライアントの符号化方式が“UTF8”の場合の設定例(Bash)
> PGCLIENTENCODING=UTF8; export PGCLIENTENCODING
クライアントの符号化方式が“UTF8”の場合の設定例
> set PGCLIENTENCODING=UTF8
ポイント
コマンドプロンプトに結果を出力する際、文字化けする場合があります。文字化けした場合は、コマンドプロンプトのフォントの設定を見直してください。
Access、ExcelまたはVisual Basicなど、ODBCインタフェースに対応したプログラム言語のマニュアルを参照してください。