[PHP-users 332] Re: PostgreSQLの検索結果をファイルに出力する
Masashi Ohba
php-users@php.gr.jp
Thu, 28 Jun 2001 14:16:39 +0900
大場です。
Cmdr. Daiyu Hatakeyama wrote;
>データ量が20カラム、100,000件くらいあります。
>Phpのプログラムから、
>PostgreSQLでのSelectの検索結果を、
>ファイルに出力したいのですが、
>何か良い手はないでしょうか?
何か良い手って、やること考えたら
データを取り出す
ファイルを書き出すプログラムにデータを食わせる
プログラムが処理をする
ってことをするわけだから
「PHPでそういうプログラムを書きましょう」
って話になると思います。
ファイルに書き出すって言ったって
CSVにするのか、セパレータ不要なのか
書き出す時のコードはどうするのかとか(日本語入ってたら)
考えなきゃならないことは多いんですが
「良い手がないか?」という質問ってことは
「何かやったけど上手くいかない」ってことでしょうか?
それなら上手く行かなかった時のPHPのコードは?
#とりあえず聞いてから進めようってことなら
#MLはサポートセンターじゃないんだから
#認識が甘いです。
PHP3で以下のようなincludeファイル作って
検索用のSQL文 $sql
ファイル名 $file
保存時の漢字コード $code
(エクセルで処理できる様にSJISにしてたかな)
の変数をこの関数に食わせるとCSVファイルに保存出来てます。
下手な書き方だとは思うけどこういうことがしたい?
ここから---------------------(エラー部分の処理は削除しました)
<?php
function csv_output($sql, $file, $code){
//検索の実行
$result = pg_exec($sql);
$rows = pg_numrows($result); //行数を取得
$columns = pg_numfields($result); //列数を取得
$i=0; //表横軸ループ初期値
$j=0; //表縦軸ループ初期値
//ファイルオープン
$fp = fopen($file, "w");
//ファイルロック
flock($fp, 2);
//データの初期化
$data = "";
//出力
for ($j = 0; $j < $rows; $j++){
for ($i = 0; $i < $columns; $i++){
//データの取り出し
$term=pg_result($result, $j, $i);
$data = $data . $term . ",";
}
//行末の改行処理
$data = $data . "\n";
}
//漢字コードの変換
$data=i18n_convert($data, $code);
//ファイルへ書込み
fwrite($fp, "$data");
//ロック解除
flock($fp, 3);
//ファイルのクローズ
fclose($fp);
}
?>
ここまで---------------------
------------------------------------------------------------
大場正志(Masashi Ohba)
E-Mail ohba@intelight.co.jp
(株) インテライト
http://www.intelight.co.jp
------------------------------------------------------------