computer.unix - UNIX

UNIX 関連の情報交換ボード

#48: PostgreSQL ODBC
Date: 2000/07/22 02:57:59 Sat Author: GOO・豪 (tnet0077)
Parent Article: #47: PostgreSQL ODBC
Child Article: #52: PostgreSQL ODBC

続きです。

情報はすべてここで手に入りました。
http://www.interwiz.koganei.tokyo.jp/software/PsqlODBC/index.html

faq もうちの環境を整備するには十分なものでした。UNIX 系の
情報サイトとしてはぴかいちのわかりやすさじゃないかと思います。

PostgreSQL ODBC Driver 日本語版を Win98 にインストールするわけですが
最初はオリジナルの英語版ドライバを入れます。実行ファイルで
普通にインストーラが起動しますので付和雷同しながらインストールします。

コントロールパネルの ODBC データソースのところに PostgreSQL ドライバが
現れました。ユーザデータソース、システムデータソースなどいろいろあるのですが
どうもファイルデータソースと言うのが今接続したい PostgreSQL にあたりそうです。
そこでデータソースの追加をしてみました。ドライバはもちろん PostgreSQL です。

するとドライバの設定ダイアログがでてきました。データベース名は
先にサンプルのゲストブックスクリプトで使った postgres を入れました。
createdb で作られるデータベースのデフォルトがこれなんですね(^^;
Server は PostgreSQL の入っているサーバの IP なりサーバ名なりを入れます。
Port はそのままでユーザー名は nobody にしました。
PHP などからの接続は nobody として処理されるらしく、
ユーザーとして既にデータベースをいじれるように登録してあったものです。
Password は無しです。オプションの中に ReadOnly のチェックが入っているので
編集したいんですから当然それをはずします。

これで OK を押すと、今まで失敗していた ODBC データソースの登録ができました。
さて ACCESS で試してみよう、と言うわけで適当に空のデータベースを用意して、
ファイル>外部データの取り込み>テーブルのリンクをしてみました。
ファイルの種類の中に ODBC detabase があるのでそれを選ぶと、
登録したデータソースがありますので(ここでも登録できます)それを選びます。
すると、test2 と言う postgres の中のアクセスを許可されているテーブルが
表示されました。ほんとに通信してる〜(T-T)感動

テーブルをリンクさせようとすると、レコードを一意にするためのフィールドを
求められます。文字は化けてるしそれにあたるものはないので困り、
全部選んでみましたが、怒られました(^^;テーブルとしてはあるので
表示してみようとすると接続に失敗しています。
もう一度ドライバのサイトを見てみると、PostgreSQL 7.0 には
2000/06/17版で対応したようです。日本語版は日本ご対応だけでなく
そういう部分でも対応が進んでいるようなので、とりあえず入れます。
DLL を \windows\system フォルダにコピーするだけです。

これでもういちどリンクし直すときちんと表示されました!
データベースの内容が日本語もきっちりと表示されています。
さてちょっと変更を加えてみようかなと思ったら、変更できませんとか言います。

faq を見ると ReadOnly は切ってあるので主キーがないのが怪しいです。
主キーがないと ACCESS では編集することができないらしいです。
データベース自体に主キーを持たせるのが一番いいんですが、
ドライバ側でも対応できるようです。主キーとして使える値を
付加して渡してくれるのです。ドライバ側の設定でそのチェックを入れて
リンクし直すと oid と言う項目が増えています。それを一意に認識する
項目として指定すると、データベースを編集できるようになりました!

さて、ゲストブックの PHP を見てみると、変更は反映されていません。
テーブルを閉じてみました。すると反映されました。
テーブルを閉じるか、レコード>更新で反映されるようです。

これ以上の編集は試していませんがデータベースのインターフェイスが
ACCESS になればかなり心強いものがあります。今までのデータベースを
そのまま使えるのもおいしいです。

ODBC を知らない段階からここまでうまくいくとは思いませんでした。
ODBC 万歳と言うところでしょうか(^^;

ここまで持ってきてしまえば、かなり一般的な用途にも使えると思います。
個人で使うにしてもサーバにデータがあると言うだけでも
十分価値のあるものになるでしょう。しかもそのデータを
PHP や Perl などの CGI からも参照できるわけですから、
データセンターとしてこれ以上ない気がします。
もちろん掲示板のような web 上のデータをまとめるのにも最適でしょう。
GOO
E-Mail: goo_n@hotmail.com
WWW: http://homepage2.nifty.com/~goo/
GTET 置き場

■ この記事のコメントを書く

■ この書き込みを削除/復活します(投稿者のみ可)
■ この書き込み近辺の一覧表示へ

【最新20記事 [一覧] [ツリー] [一括] 】 【最新の記事は 89 番です.】
【前の20記事 [一覧] [ツリー] [一括] 【次の20記事 [一覧] [ツリー] [一括]
番から 番までの記事を
UNIX に新しい記事を

T-Net ■ メインページ