• ベストアンサー

CSV出力に関する考え方

先日よりPHPでのデータ加工方法を質問していますが、 CSV出力に関してどう考えたらいいのかがわかりません。 というのは、CSV出力したい場合に、 1.データをSQLで取り出したものを出力 2.データをSQLで取り出し、PHPで加工(画面イメージと同じようなもの)を出力 のどちらなのかについてです。 後者を行うための方法があればいいのですが、 前者だと1SQLでやりたい事を実現しなければならないのかと思い悩んでいます。 初心者な質問で申し訳ありませんがコメントお願いします。

  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

2のようにデータをSQLで抽出し、PHPでセパレータ と段落区切りをつけて、標準出力すればいよいでしょう。 その際にヘッダをつけて吐き出せば、クライアント側で ダウンロードを促すことができます

getamato
質問者

お礼

ありがとうございます。 自分のまとめとして、CSVについてもう一度別途質問する予定 ですので、ご意見とコメントいただければと思います。 よろしくお願いします。

関連するQ&A

  • csvファイルでの出力について

    C言語初心者です。 プログラミングにおいて質問なのですが、csvファイルを読み込み、 そのデータを用いて計算し、csvファイルで出力するという問題なのですが、C言語においてcsvファイル形式で出力するにはどのような方法がありますか? 補足:ラベル行に全角文字を入力しないといけません。

  • ACCESSで出力したCSVをSQL2005へ取り込む時

    いつもお世話になっております。 ACCESS(2003)から、クエリの内容をマクロの「区切り記号付きエクスポート」を利用して出力したCSVファイルを、SQL(2005)にインポートで取り込もうとする際なのですが、SQL(2000)の頃は問題なく取り込めた様式なのに、SQL(2005)になってからはエラーとなり取り込むことが出来なくなりました。 色々やってみて、文字列を囲う「””」が原因のようなのは分かったのですが、いちいち「””」取ってから取り込むのも手間で何とかできないかと考えています。 そこで質問なのですが、 (1)ACCESS(2003)からCSVを出力する際、「””」をうまく取る方法は無いでしょうか? (文字データの中には数値の頭に「0」を入れたくてわざと文字列に変換しているのもあるので、データの形はそのまま保持したく思います。) (データが大きくEXCELに貼り付けるのは無しです。また諸事情からリンクも無しです。) (2)或いはSQL(2005)の設定の方で上記のようなデータをうまく取り込めるように出来るものでしょうか? 以上、つたない文章で申し訳ありませんが、お知恵をお貸し下さい。 以上、よろしくお願い致します。

  • 外部のCSVファイルをPHPで読み込み、出力させたい

    下記の質問を参考に外部のCSVファイルをPHPで読み込み、出力させるphpを書きました。 http://oshiete1.goo.ne.jp/qa1615206.html data.csvは "データ01" "データ02" "データ03" ・・・ といったように100行書いてあります。 <1ページ目に記述したphp> <?php $fp = fopen("data.csv", "r"); $repeat = 10; $count = 1; while ($data = fgetcsv($fp, 10000)) { if ($count > $repeat) { break; } print <<<EOD $data[0] EOD; $count++ ; } fclose ($fp) ?> 2ページ目には11行目からのデータを出力したいと思い、 $data[0]の部分を$data[11]に変えたり、 $repeat = 20; $count = 11;にしたりしたのですが、 両方ともうまくいきませんでした。 2ページ目にcsvの11行目からのデータを出力するにはどうすればいいのでしょうか? 私がしたいことは、1ページ目にcsvの1~10行目を、2ページ目にcsvの11~20行目を出力したいとおもっております。 上記のphp以外の記述でも構いませんので、どなたかお分かりになる方がいらっしゃいましたら是非教えて下さい。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • データベース単位でのCSV出力方法について

    データベース単位でのCSV出力方法について phpからデータベースのバックアップ機能として、 データベース単位でCSV出力を行いたいと思っています。 テーブル単位で出来る記事は見受けられるのですが、 上記の方法は可能でしょうか? それともう一つお聞きしたいことがあります。 SQL文が格納された変数をexec関数で実行しているのですが、 直接phpmyadminでは成功するのにもかかわらず、 csvファイルが生成されません。 下記にSQL文を記しておきます。 --SQL文-- select * from users into outfile "C:/works/~中略~/dump_0426.csv" fields terminated by ',' ENCLOSED BY '"' ご教授よろしくお願い致します。 【環境】 DB:mysql5.0.51b-community PHP:5.2.6

    • ベストアンサー
    • MySQL
  • SQLのCSV出力について

    SQLからCSVで電話番号(03,1111,2222)をダウンロードすると「3」「1111」「2222」のように出力されます。これをCONCAT( tel01 , tel02 , tel03)で結合すると「311112222」のように出力されます。「03-1111-2222」のように出力する方法はありますか?

  • CSV出力

    cakephpにて開発をしています。 CSV出力するためにダイアログを表示したいのですが 表示されず、画面にcsvのデータが表示されてしまいます。 $csv_file = sprintf($this->convert_sjis("テスト_%s.csv"), date("Ymd-hi")); // 適当にファイル名を指定 header ("Content-disposition: attachment; filename=" . $csv_file); header ("Content-type: application/octet-stream; name=" . $csv_file); print($buf); // 出力 readfile($outputFile); phpのソースです。以前はこれでダイアログが表示されたのですが ajaxで呼び出すように修正したあとから画面に出力されるようになってしまいました。なにかご存知でしたらご教示お願いします。

    • ベストアンサー
    • PHP
  • PHPでSQLiteのデータをCSVに出力するときの0埋めについて

    phpでSQLiteに格納させたデータをCSVに出力しています。 とある項目のデータの型は“CHAR”にしているのですが、 CSVに出力すると、 “0888” ⇒ “888”という風に頭の0がカットされてしまいます。 0埋めするためにはどのようにしたらいいでしょうか、 恐れ入りますが、どうか教えてください。

    • 締切済み
    • PHP
  • csv出力した内容を配列で取得できますか?

    データベースのテーブル内容をサーバー上にcsv出力すると同時に出力した内容を配列で取得できないでしょうか?(PDOを利用しています) $sql= "SELECT id, name FROM tb INTO OUTFILE '/tmp.csv'"; $stmt = $dbh->query($sql); これでcsvは出力されるのですが、csv出力した内容を配列で取得したく、 $array = $stmt->fetchAll(PDO::FETCH_ASSOC); をするとGeneral Errorとなります。 先にSELECTで内容を配列で取得してから配列のループでcsvの内容を作成し、出力する方法もありますが、データ量が数十万件あるのでループ処理が遅い気がしています。 良い方法があればお教えください。 よろしくお願い致します。

    • ベストアンサー
    • MySQL
  • Sleipnir2のお気に入りをcsv出力する方法

    Sleipnir2のお気に入りをcsv出力したいと思ったのですが、そのような事は可能でしょうか? なお、実際にやりたいことは「Sleipnir2のお気に入りのコメント欄に、どのようなコメントが入力されているか簡単に確認したい」となります。 ただし、お気に入りの数が多い為、Sleipnir2上で一つ一つ確認するのは現実的ではないと思っています。 またSleipnir2のお気に入りのFavorite.ffvをテキストエディタで開いてみたところ、文字化けしてしまい、正しく読み取る事は出来ませんでした。 その為、csv出力さえできれば、それをExcelで開いてコメント欄でソートすれば簡単に確認できるのではと思いました。 なお、実際にやりたいことを実現できる手法があれば、csv出力以外でも大丈夫です。 以上、よろしくお願いします。

  • CSV出力で変換されてしまった時間の表示

    こんにちは。教えて下さい。 ある販売情報プログラムからCSV出力されたデータをエクセルで加工して使いたいと思っておるのですが、プログラム上では、 例えば「17:11」という時間の表記が、CSV出力してエクセルで見ると、「61893」と変換されてしまいます。 エクセルでプログラムと同様に「17:11」と表示させるにはどうしたらよいでしょうか?

専門家に質問してみよう