私の方でPostgreSQLで調べていたところ、下記サイトに

http://www.linux.or.jp/JF/JFdocs/PostgreSQL-FAQ. …

PostgreSQLをPerl5で使用できることがわかりました。
私のHPを開いているプロバイダでもPerl5・PostgreSQLとも
サポートされているので、使用したいとおもっているのですが、
コーディングの仕方や関数の種類などわかりません。
皆さんでPerl5・PostgreSQLとの連携について書かれているサイトや
書籍をご存知でしたら、お教え願えないでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (3件)

参考URLの場所なんかはいかがでしょう?


過去の版ですが解説書もPdf形式で公開されていますし、MLもあるのでそちらで質問も出来ます。
リンクからMLの過去ログを漁ればpgライブラリ(PostgreSQLのPerlインターフェース)の使い方についても結構出てたはずです。

参考URL:http://www.sra.co.jp/people/t-ishii/PostgreSQL/
    • good
    • 0

私も現在勉強中です。

まあ、どのサイトも不親切なこと!
クドクド細かい定義など後回しにしてくれって感じです。
その点、ここはいかがでしょう? もう遅いかな?
http://www.atmarkit.co.jp/flinux/index/indexfile …

データベースの章でPostgreSQLとMySQLとの連携をサン
プルで説明してくれてます。2日がかりでやっと上手く
動いたのですが、このサイトに詳しく書かれてない
エラー処理やWEB連携についての情報を探してネット上
をさまよってる最中です。

まあ、このぐらいのことが素人にスンナリ出来たら
世の中のSEやデータベース技術者が食いっぱぐれちゃう
から易しく説明するサイトが登場しないのも分かりま
すけどね・・・。

ちなみにFAQから自分がホントに必要な情報を探るのは
大変な労力使うよ。ホント疲れる・・・。
    • good
    • 0

PerlでPostgreSQLを使う場合、alfeimさんも紹介されていますが、


Pgが一番手をつけやすいと思います。
参考URLのページを見れば、使い方は大体わかると思います。

が、DBIとDBD-Pgの方が汎用性は高いと思います。
(DBを変えたときにもDBDを入れ替えるだけでほぼ同じコードが走り
ますから)
色々なDBを試してみようと思うなら、初めからDBIにしてみても良いと
思います。

各モジュールはCPANで探してみて下さい。
PostgreSQLの日本語FAQも念のため。
http://www.rccm.co.jp/~juk/pgsql/faq-japanese.sh …

alfeimさん紹介の参考URLは基本なので、押さえておいてください。

参考URL:http://theoryx5.uwinnipeg.ca/CPAN/data/pgsql_per …
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Qperlの1行目が#!/usr/bin/perlだと動かず#!/usr

perlの1行目が#!/usr/bin/perlだと動かず#!/usr/bin/perl5.8.9だと動くのですが、
#!/usr/bin/perlで動くようにするにはどうしたらいいのでしょうか?

インストールされているperlは
This is perl, v5.8.9 built for darwin-2level
です。

どこかでパスの設定をしてやればいいと思うのですが、
どこに何を書けばいいのかよくわかりません。

環境はMacOsX v10.6 SnowLeopardです。
どなたかよろしくお願いいたします。

Aベストアンサー

MacOSのことはよくわかりませんが、一般的なUNIX系OSで考えると、、

シンボリックリンク/usr/bin/perlを作り、/usr/bin/perl5.8.9にリンクすればいいでしょう。
ln -s /usr/bin/perl5.8.9 /usr/bin/perl

そうすればPerlスクリプトは「#!/usr/bin/perl」のままでOKです。

Qshとperlのデータ連携&perl出力

初めて記載します。宜しくします。
perlでプログラムするのが初めてでなので、大分間違ってるかもしれません。
※UNIX環境でシェルで日付差分(yyyymmddhhmmss)を求めたいのですが、「date -d」コマンドは使用出来ません。

シェルを実行しコマンドラインにて入力された【引数1】:実行区分(1 or 2)【引数2】:日付(yyyymmddhhmmss)、【引数3】:日付(yyyymmddhhmmss)と区分をperlに引数として渡して、perlでは"引数3-引数2"をして日数を算出しファイルに出力させたいです。
perl名:MCPFZAR_Compl.pl
実行コマンド例: perl MCPFZAR_Compl.pl 1 20110302000000 20110306000000


以下にperlのプログラムを掲載します。
#!/opt/perl/bin/perl
⇒入力パラメータチェック実行
# 日付1を年、月、日、時、分、秒に切り分け
$L_Year = int(substr($ARGV[1],0,4));
$L_Mon = int(substr($ARGV[1],4,2));
$L_Day = int(substr($ARGV[1],6,2));
$L_Hour = int(substr($ARGV[1],8,2));
$L_Min = int(substr($ARGV[1],10,2));
$L_Sec = int(substr($ARGV[1],12,2));
# 取得日付チェック関数を実行する。
($L_Ret, $L_Ret_Msg) = &MCPFLCF_DayExists($L_Year, $L_Mon, $L_Day, $L_Hour, $L_Min, $L_Sec);
# 異常終了した場合
if( $L_Ret != 0 ){
# エラーを返却する。
return ($L_Error_End, "$L_Err_MSG_4 [$L_Ret_Msg]");
}
# 日付1を秒に変換
$L_Time1 = timelocal($L_Sec, $L_Min, $L_Hour, $L_Day, $L_Mon - 1, $L_Year);

⇒同様に日付2も変換

# 日付1と日付2の差分を取る。
$L_TimeRet = ($L_Time2 - $L_Time1);

# ファイルに書き込む為に、ファイルopenしてから書込み
open (OUT,"> $outfile");


# 結果形式種別が1の場合
if($ARGV[0] == 1){
# 結果を日数で参照渡しする。
$L_LET = int($L_TimeRet / (60 * 60 * 24));
print OUT "$outfile";

}

# 結果形式種別が2の場合
elsif($ARGV[0] == 2){
# 結果を秒で参照渡しする。
$L_LET = $L_TimeRet;
print OUT "$outfile";;
# CLOSEする
close(OUT);

シェルを実行すると、エラーにはなりませんが
ファイルの出力もされません。

かなりどうしたらよいかわからない状態なので回答宜しくお願い致します。
足りない情報がありましたらご教授願います。

初めて記載します。宜しくします。
perlでプログラムするのが初めてでなので、大分間違ってるかもしれません。
※UNIX環境でシェルで日付差分(yyyymmddhhmmss)を求めたいのですが、「date -d」コマンドは使用出来ません。

シェルを実行しコマンドラインにて入力された【引数1】:実行区分(1 or 2)【引数2】:日付(yyyymmddhhmmss)、【引数3】:日付(yyyymmddhhmmss)と区分をperlに引数として渡して、perlでは"引数3-引数2"をして日数を算出しファイルに出力させたいです。
perl名:MCPFZAR_Compl.pl
実行コマンド...続きを読む

Aベストアンサー

載せていただいたコードを元に作ってみました。(簡略化しています)

■動作確認をしたコード============
#!/usr/bin/perl
use Time::Local;
use warnings;

#---------------------
# 引数の取得とか
#---------------------
$L_Year = int(substr($ARGV[1],0,4));
$L_Mon = int(substr($ARGV[1],4,2));
$L_Day = int(substr($ARGV[1],6,2));
$L_Hour = int(substr($ARGV[1],8,2));
$L_Min = int(substr($ARGV[1],10,2));
$L_Sec = int(substr($ARGV[1],12,2));
$outfile = "./result.txt";

#---------------------
# 差分を取得
#---------------------
$L_Time1 = timelocal($L_Sec, $L_Min, $L_Hour, $L_Day, $L_Mon - 1, $L_Year);
$L_Time2 = timelocal($L_Sec, $L_Min, $L_Hour, $L_Day + 1, $L_Mon - 1, $L_Year);
$L_TimeRet = ($L_Time2 - $L_Time1);

#---------------------
# 差分をファイルに出力
#---------------------
open (OUT,"> $outfile");
if($ARGV[0] == 1){
$L_LET = int($L_TimeRet / (60 * 60 * 24));
print OUT "$L_LET";
}
elsif($ARGV[0] == 2){
$L_LET = $L_TimeRet;
print OUT "$L_LET";
}
close(OUT);
======================

■気になったところ
・OUT "$outfile" だとファイルのパスをファイルに書きこむ?$L_LETの間違い?
・$outfile(書き込むファイルのパス)が定義されていない?


use warnings; を始めに宣言しておくと、エラー部分を教えてくれますよ。

載せていただいたコードを元に作ってみました。(簡略化しています)

■動作確認をしたコード============
#!/usr/bin/perl
use Time::Local;
use warnings;

#---------------------
# 引数の取得とか
#---------------------
$L_Year = int(substr($ARGV[1],0,4));
$L_Mon = int(substr($ARGV[1],4,2));
$L_Day = int(substr($ARGV[1],6,2));
$L_Hour = int(substr($ARGV[1],8,2));
$L_Min = int(substr($ARGV[1],10,2));
$L_Sec = int(substr($ARGV[1],12,2));
$outfile = "./result.txt";

#-----------------...続きを読む

Q#!/usr/local/bin/perl

とPerlのCGIの先頭に書きますが
FedoraCore3でPerlを使うときにはどのように書けばよいのでしょうか?

Aベストアンサー

#!/usr/bin/perl

でしょうか。FedoraCore3は私は使っていませんが、cgiの先頭に書くのは、perlへのパスになるので、もしターミナルが使える状況なら

which perl

で得られるパスを #! につづけて書けばOKです。

Q#!/usr/local/bin/perlで命令が出せません。

プログラミングのド素人で、独学でwindows上でcygwinを使っている者から質問させていただきます。「#!/usr/local/bin/perl」というコマンドをプログラムの先頭に書いて、[ファイル名]を入力してcygwinで命令をしたところ、命令が実行できず、「commond not found」と出てしまいました。そこで、ネット上で、いろいろ調べて、試してみたのですが、どうしても、解決できません。
どなたか、アドバイスをいただけないでしょうか?
ちなみに、perl [ファイル名]では、命令を実行することができます。「type -a perl」というコマンドを入力すると、「/cygdrive/c/Perl/bin/perl」というのがでてきたので、「#!/cygdrive/c/Perl/bin/perl」というコマンドを書いても上手くいきませんでした。
ちなみに、私が書いたプログラムは、以下のようなものです。
#!/cygdrive/c/Perl/bin/perl (あるいは#!/usr/local/bin/perl)
# hello -- 挨拶のプログラム
print ("hello");

プログラミングのド素人で、独学でwindows上でcygwinを使っている者から質問させていただきます。「#!/usr/local/bin/perl」というコマンドをプログラムの先頭に書いて、[ファイル名]を入力してcygwinで命令をしたところ、命令が実行できず、「commond not found」と出てしまいました。そこで、ネット上で、いろいろ調べて、試してみたのですが、どうしても、解決できません。
どなたか、アドバイスをいただけないでしょうか?
ちなみに、perl [ファイル名]では、命令を実行することができます。「type -a perl...続きを読む

Aベストアンサー

perl.exe が、あなたの書いたスクリプトを見付けられないんじゃ無いでしょうか。

あなたの書いたスクリプトが hello.pl だとすると、

./hello.pl

とかで起動できないいんですね? 以下の Windows風の絶対パスでの起動を試してみてください。

'c:\foo\bar\hello.pl'


type perl の結果でスクリプトの 1行目 を決めるのは、大方は正しいでです。 正しくないのは、ふたつ以上のPerl処理系がインストールされた環境で使い分けるべき場合ですね。

type の結果が 「/cygdrive/c/Perl/bin/perl」というのは 「c:\Perl\bin\perl」であって、Cygwin の Perlでは無いのでしょう。それが Cygwin のShell(bash等) と相性の悪いのはしょうがない事です。

まずは、c:\Perl\bin\perl を使うのか Cygwin のPerl を使うのかを決めるのが良いと思います。 それにってその後にすべき事が変ってきます。

perl.exe が、あなたの書いたスクリプトを見付けられないんじゃ無いでしょうか。

あなたの書いたスクリプトが hello.pl だとすると、

./hello.pl

とかで起動できないいんですね? 以下の Windows風の絶対パスでの起動を試してみてください。

'c:\foo\bar\hello.pl'


type perl の結果でスクリプトの 1行目 を決めるのは、大方は正しいでです。 正しくないのは、ふたつ以上のPerl処理系がインストールされた環境で使い分けるべき場合ですね。

type の結果が 「/cygdrive/c/Perl/bin/perl」とい...続きを読む

QVineLinux2.6でPerl5.6.13から Perl5.8にするには

VineLinux2.6でPerl5.6を使っています。
apt-get upgrade perlで簡単にアップグレードできると思っていましたが、Perl 5.6.13にアップグレードしただけで、5.8までできませんでした。rpm -eでアンインストールしてから行おうとしましたが、たくさん依存関係がでました。また、ActivePerl5.8用のrpmも存在していますが、これを単に rpm -Uvhでインストールしても
依存関係で問題ないでしょうか?

Aベストアンサー

Vine Linux 2.6 標準のperlに対してActivePerl5.8をアップグレードできるのかな・・・・? 先に「-i」でActivePerlを入れてようとしてみてはどうだろうか。

perl5.6を先に消したいのであれば、依存関係にあるパッケージを全て削除する必要があるが、例えばApacheの設定ツールなど、Perlに依存したツール類は結構多いので、依存関係を無視して削除した方が良いかも知れない。後でperl5.8でもそれらは動くと思われるし。

Vine標準のPerlの依存関係が山ほど出てくるのは、先述のツール類が多いが、後でperl5.8を入れるつもりならばあまり心配はないように思う。多分。


人気Q&Aランキング

おすすめ情報