- 締切済み
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;
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- shimix
- ベストアンサー率54% (865/1590)
ANo.1です。 >書き込みオープンのチェックはどのようにしたらできるのでしょうか? 最初に確認しておけばよかったのですが「何も出力されない」というのはdata.datがサイズ0で作成されるのでしょうか?それともdata.datの作成がされないのでしょうか?open(OUT, ">data.dat"); でも返り値がfalseの場合、エラーメッセージを出力させてみてください(or dieでいいです)。
- sakusaker7
- ベストアンサー率62% (800/1280)
> print join(",", @$raRes), "\n"; >とすると画面出力できているので出力に失敗していると思います。 とのことですけど、 >open(OUT, ">data.dat"); データベースへの接続はチェックしているのにこの書き込みオープンを チェックしていませんが、本当に書き込みオープンできてますか?
- shimix
- ベストアンサー率54% (865/1590)
>下記プログラムだとなにも出力されません。 問題の切り分けが出来ていないと思います。 ・DBからのデータ取得に失敗している ・CSVファイルの出力に失敗している print OUT・・の直後に何か表示を追加するなりして、問題の切り分けをしてください。
補足
print OUT join(",", @$raRes), "\n"; の部分を、 print join(",", @$raRes), "\n"; とすると画面出力できているので出力に失敗していると思います。
補足
書き込みオープンのチェックはどのようにしたらできるのでしょうか?