Rubyでのcsvファイル出力について質問です。


rubyで以下のようなバッチプログラムを作成したいと思っています。

概要:テーブル「maintable」、「userdata」のデータをcsv形式のファイルで出力する。
maintable
-----------------------------------------------
No.   name    tel    
===============================================
1    hanako   111-1111-1111
2    taro     222-2222-2222
3    jiro     333-3333-3333
4    nanako    444-4444-4444



-----------------------------------------------

userdata
-----------------------------------------------
name   section
===============================================
hanako  soumu
taro    jinji
nanako  keiri
jiro     jinji



------------------------------------------------

質問を書ききれないのでコメントに追記します。

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2010/07/12 14:36:32
  • 終了:2010/07/16 10:47:16

ベストアンサー

id:windofjuly No.1

うぃんど回答回数2625ベストアンサー獲得回数11492010/07/13 05:37:47

ポイント100pt

フォルダを作成してから次のSQLを生成して順にMySQLに投げてやれば楽でしょう

SELECT *
FROM maintable
WHERE `No.` BETWEEN 2 AND 4
INTO OUTFILE 'C:\csvdata\日付のフォルダ\maintable.csv' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n'
SELECT u.*
FROM maintable m
LEFT JOIN userdata u ON u.name = m.name
WHERE `No.` BETWEEN 2 AND 4
INTO OUTFILE 'C:\csvdata\日付のフォルダ\section.csv' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n'

番号がとびとびになるなら BETWEEN のかわりに IN を使ってもいいよね

WHERE `No.` IN (2,4,5,8,・・・・)

参考URL

http://itpro.nikkeibp.co.jp/article/COLUMN/20060122/227654/

http://dev.mysql.com/doc/refman/5.1/ja/select.html

id:Ryo0524

ありがとうございます!!

なんとかできそうです。

2010/07/16 10:46:54
  • id:Ryo0524
    <詳細条件>
    1.maintableのNo.2~4のひとのデータのみをcsvとして出力する(maintable.csv)
    2.1の条件(No.2~4)に該当した人のデータのみをcsvとして出力する(userdata.csv)
    2.作成したcsvは以下のフォルダに保存する
      C:\csvdata\YYYYMMDD
      ※このバッチを実行した日付のフォルダを作成する
    3.ファイル名はmaintable.csvおよびsection.csv
      (テーブル名.csv)



    <結果>
    maintable.csv
    ------------------------------------------------
    "2","taro","222-2222-2222"
    "3","jiro","333-3333-3333"
    "4","nanako","444-4444-4444"
    ------------------------------------------------

    userdata.csv
    ------------------------------------------------
    "taro","jinji"
    "nanako","keiri"
    "jiro","jinji"
    ------------------------------------------------

    ※注意※
    rubyの中でmysqlを利用してcsvを生成できるのであればmysqlを使ってもかまいません。
  • id:Ryo0524
    質問者です。

    出力するcsvの各項目はダブルクオートで囲まれてなくてもOKです。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません