• 締切済み

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;

みんなの回答

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.3

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

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

> print join(",", @$raRes), "\n"; >とすると画面出力できているので出力に失敗していると思います。 とのことですけど、 >open(OUT, ">data.dat"); データベースへの接続はチェックしているのにこの書き込みオープンを チェックしていませんが、本当に書き込みオープンできてますか?

nana_poco
質問者

補足

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

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

>下記プログラムだとなにも出力されません。 問題の切り分けが出来ていないと思います。 ・DBからのデータ取得に失敗している ・CSVファイルの出力に失敗している print OUT・・の直後に何か表示を追加するなりして、問題の切り分けをしてください。

nana_poco
質問者

補足

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

関連するQ&A