« 2009年3月 | トップページ | 2009年6月 »

2009年4月

2009年4月 4日 (土)

postgresにアクセスするWindowsアプリを作る

サーバにあるpostgresにアクセスしてCSVを出力するWindowsコマンド(exe)があると便利だと思い、やってみた。
ユーザが不定期にDBからデータ抽出をしたいと言うのだが、わざわざそのためのWEBページを作るのもなんだし、毎度依頼されるのもお互い大変ということで、コマンドを作ろうかと、。

以前、RubyスクリプトをEXEにして人に使ってもらったことがあったので、Rubyのpostgres拡張モジュールを使うことにした。

● インストール

  1. まずはRubyのインストール。ActiveScriptRubyが良いらしい(*)。
    この中にEXE化の仕組みもちゃんと入っていた。
  2. PostgresSQLのインストール。
    DLLが必要らしい。pgAdminだけでもいいのかも。
  3. 次にRubyのPostgres拡張モジュールのインストール。
    スタートメニューからRuby consoleを選んで
    > gem install ruby-postgres
    でさっくり完了。
  4. 環境変数のPATHに
    C:\Program Files\PostgreSQL\8.3\bin
    を追加

● スクリプト作成

require "rubygems"
require "postgres"
conn = PGconn.connect('192.168.1.52', 5432, '','', 'dbname', 'login','passwd')
res = conn.exec("select * from table;")
res.each do |rec|
  print rec.join(','), "\n"
end

● 動作確認

> ruby test.rb

● 実行形式(EXE)の作成

> ruby -r exerb/mkexy test.rb

でEXEを作るためのレシピファイル(*.exy)なるものが作られる。これを使って

> exerb test.exy

で、実行形式(text.exe)が作られる。

● 人に渡す準備

他の人の環境で動作させるには、いくつかのDLLが必要らしい。
家のノートPC(Vista)で確認したら

comerr32.dll
gssapi32.dll
k5sprt32.dll
krb5_32.dll
libeay32.dll
libiconv2.dll
libintl3.dll
libpq.dll
ssleay32.dll
zlib1.dll

が必要だった。

| | コメント (0) | トラックバック (0)
|

« 2009年3月 | トップページ | 2009年6月 »