みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

PerlからのCSV出力

Perl初心者です。
PerlでOracleに接続し、結果をCSVを出力したいのですが
下記プログラムだとなにも出力されません。
Oracle10g
OS:Linux
***

#!/user/bin/perl
#
#
# DBI モジュールの読み込み
use DBI;

#接続
my $hDb = DBI->connect("dbi:Oracle:dbname", "user/pass") or die "CONNECT ERROR $DBI::errstr";

#SELECT
#
$hSt = $hDb->prepare("SELECT ID,NAME FROM MASTER");
open(OUT, ">data.dat");
#実行
$nRes = $hSt->execute;

#データの取得
while($raRes = $hSt->fetchrow_arrayref) {
print OUT join(",", @$raRes), "\n";
}

# ファイルクローズ
close(OUT);
$hSt->finish;
$hDb->disconnect;

投稿日時 - 2008-05-26 19:14:07

QNo.4052403

困ってます

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

ANo.1です。

>書き込みオープンのチェックはどのようにしたらできるのでしょうか?

最初に確認しておけばよかったのですが「何も出力されない」というのはdata.datがサイズ0で作成されるのでしょうか?それともdata.datの作成がされないのでしょうか?open(OUT, ">data.dat"); でも返り値がfalseの場合、エラーメッセージを出力させてみてください(or dieでいいです)。

投稿日時 - 2008-05-27 22:27:39

ANo.2

> print join(",", @$raRes), "\n";
>とすると画面出力できているので出力に失敗していると思います。

とのことですけど、
>open(OUT, ">data.dat");
データベースへの接続はチェックしているのにこの書き込みオープンを
チェックしていませんが、本当に書き込みオープンできてますか?

投稿日時 - 2008-05-26 22:35:53

補足

書き込みオープンのチェックはどのようにしたらできるのでしょうか?

投稿日時 - 2008-05-27 22:05:22

ANo.1

>下記プログラムだとなにも出力されません。

問題の切り分けが出来ていないと思います。

・DBからのデータ取得に失敗している
・CSVファイルの出力に失敗している

print OUT・・の直後に何か表示を追加するなりして、問題の切り分けをしてください。

投稿日時 - 2008-05-26 19:57:21

補足

print OUT join(",", @$raRes), "\n";
の部分を、
print join(",", @$raRes), "\n";
とすると画面出力できているので出力に失敗していると思います。

投稿日時 - 2008-05-26 20:05:43