csvファイル内のデータをソートする方法

このQ&Aのポイント
  • csvファイル内に保存されたログデータを特定の順序でソートする方法について教えてください。
  • この質問では、csvファイル内のデータを「端末ID(昇順)ユーザーID(昇順)日付(降順)時間(降順)」の順序でソートする方法を知りたいです。
  • csvファイル内のログデータを見やすくするために、特定の順序でデータをソートしたいです。具体的なソート方法を教えてください。
回答を見る
  • ベストアンサー

csvファイル内にてソートする方法

ご協力お願いします。 あるログデータを取得したcsvファイルを作成しました。しかし、データ量も多く見やすいようにソートをかけたいのですが方法がわかりません。csvファイルの中身は以下のようになっています。 ___________________________ | 端末ID | ユーザーID | 日付 | 時間 | ――――――――――――――――――――――――― | ITD002 | 00000001 |2005/08/22| 11:00 | ――――――――――――――――――――――――― | ITD002 | 00000003 |2005/08/22| 21:00 | ――――――――――――――――――――――――― | ITD001 | 00000001 |2005/08/22| 12:00 | ――――――――――――――――――――――――― | ITD001 | 00000002 |2005/08/22| 18:20 | ――――――――――――――――――――――――― 以上のような中身になっています。レコード量は、もっと多いです。このランダムな順番に取得したレコードを 端末ID(昇順)ユーザーID(昇順)日付(降順)時間(降順)でソートする方法をご教授お願いします。

  • 0417
  • お礼率18% (6/32)

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

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

ODBCドライバーに、テキストドライバーがあるので組み込み、 ソートするクエリを作成して、結果を出力してしまう。 ただし、別ファイルになりますので、どうしても同じファイルで、というなら 出力をワークとして作成後、元ファイルにコピーで上書き&ワーク削除する。

その他の回答 (3)

  • m2m10
  • ベストアンサー率0% (0/11)
回答No.4

こんちは CSVファイルをADOのSQLで ユーザーID(昇順)日付(降順)時間(降順)でソート がVBAで可能です。 

参考URL:
http://www.katch.ne.jp/~h-inoue/tips/asp/0001.html
0417
質問者

補足

データベースを使わないでの作業なんですが、ADOのSQLを使いソートするのは可能ですか?

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 一行目だけが、固定長ではないようですね。 全体が固定長なら、MS-DOSのSort で出来ます。 一行目は、二バイト文字ですから、昇順・降順で、一番最後か先頭のどちらかになってしまいます。 使い方は、コマンドラインから、SORT /? とでもしてみてください。 ユーザーID とか、日付とかは、文字列の何番目か指定すればよいです。 >SORT FILENAME > FILENAME1 とリダイレクトすればよいです。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

エクセルが使えるなら、一旦エクセルに読み込ませて、エクセルでソートしCSVファイルで保存する。 アクセスが利用できるなら、読み込んでクエリで昇順降順を指定。 VBなどプログラムを組めるなら、ソートのアルゴリズムを使ってソートする。 大型やオフコンにはソート・マージユティリティがついていたものだが、MS社は、「アクセサリ」などにはなぜかソートユティリティをつけないですね。 市販は、買ってくれる人が少なくて、ソフト会社は、作る気がしないでしょうね。

関連するQ&A

  • csvファイルの読込みとソート

    いつも大変参考にさせていただいております。 csvファイルの読み込みとソートをしたく、ネットや過去ログ等を相当調べたのですが、完全に詰まってしまいました。 (検索キーワード:「php csv ソート」「php 二次元配列 ソート」など) とても困っています。どなたかよろしくお願いします。 以下のようなcsvファイルを読み込みソートしたいのです。 ■csvファイル 20110803, A, りんご 20111215, B, みかん 20110306, A, みかん 20110620, A, りんご 20110215, B, りんご ■個別にやりたい処理 (1)、左列の日付で昇順ソートしてすべて表示 (2)、「A」を含む行をすべて表示(日付順) (3)、「A」+「りんご」を含む行をすべて表示(日付順) □補足 csvをfgetcsvで読み込み、テーブルに入れて表示するところまではできました。 csvの行は増えていきます(max100行位)。列は固定。

    • ベストアンサー
    • PHP
  • ファイルを開く等のダイアログのソート順

    各アプリの「ファイルを開く」等を選択するとダイアログが現れ、ファイルの一覧を表示 しますが、このソート順はデフォルトでは「ファイル名」の昇順になっているかと思い ます。 最近何の操作をしたのかわかりませんが、更新日時の降順になってしまいました。 詳細で表示してファイル名昇順ソートした後にファイルを選択したりキャンセルしても 直りません。 不便なので、ファイル名昇順で表示されるように戻すことはできないでしょうか?

  • wshでcsvファイルのソートを行いたい

    wshのプログラムで困っているため教えてください。 wshでcsv(カンマ区切り)のファイルのソートを行い、Escel形式で保存するプログラムを書いています。 調べてみたところ、wshではソート関数がないようで、 adodbのsort関数を使用して対処しようとしていますが、どうもうまくいきません。 (※adodbの必要はないのですが、ExcelVBAのsortのコードを書こうとするとエラーになってしまったので、adodbにしています。) <仕様> csvファイルのソートのキーになるのは、「判定区分」の値で昇順に行いたいです。 csvファイルの一行目は、カラム名としてソート対象にはなりません。 読み込んだcsvファイルをexcel形式に保存したいです。 ■csvファイルの形式は、以下のような形です。 性別,年代,判定区分,生年月日,日付 女性,10,0,2010/01/10,2013/7/7 23:57 男性,50,2,2000/03/30,2013/7/7 13:7 女性,10,0,1990/01/20,2013/7/7 15:22 女性,20,1,2001/12/10,2013/7/7 8:10 *----------------------------------- <ソース> Set con = CreateObject("ADODB.Connection") With con .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Path & ";" _ & "Extended Properties='text;HDR=Yes;FMT=Delimited'" .Open End With Set rec = CreateObject("ADODB.Recordset") rec.Open "select * from " & csvfile & " order by 判定区分", con *----------------------------------- うまくいかないため ↓でも書いています。 *----------------------------------- Const adDate = 7 Const adVarChar = 200 Dim ans Set objADO = CreateObject("ADODB.Connection") Set rs = CreateObject("ADODB.Recordset") Set re = CreateObject("VBScript.RegExp") rs.Fields.Append "性別", adVarChar, 255 rs.Fields.Append "年代", adVarChar, 255 rs.Fields.Append "判定区分", adVarChar, 255 rs.Fields.Append "生年月日", adDate rs.Fields.Append "日付", adDate rs.Open ans = "" rs.Sort ="判定区分 ASC" rs.MoveFirst Do While Not rs.EOF ans = ans & rs.Fields(0).Value & vbCrLf rs.MoveNext Loop MsgBox ans エラーになってしまいます。 ソート処理だけですでににっちもさっちもいかないため、教えていただきたいです。 どうぞ宜しくお願いいたします。

  • Excelのユーザー定義のソート

    あるデータを都道府県別(北から)にソートしたいと思い、北海道~沖縄までをユーザー定義リストにしたのですが、ソートがかかりません。通常の昇順、降順でもないようだし??どなたか教えてください。お願いします。m(__)m

  • C言語のCSV形式からのソート

    C言語初心者です。 C言語でCSV形式のテキストファイルを読み込み そのファイルの内容(数値)を昇順にソートして表示するプログラムを作りたいのですが中々上手く行きません・・・。 調べても分からず困っています。 どなたか教えていただけませんか?

  • 2007/1/15形式をソートしたい

    予約カレンダーを作っています。 ユーザーは不特定の日を予約できます。 CSVファイル 2,1029,2007/1/15,C, 3,1029,2007/1/15,B,checked 4,1029,2007/1/10,D, 5,1029,2007/1/9,C,checked 6,1029,2007/1/16,D, 8,1023,2007/1/17,D 9,1023,2007/1/24,D 10,1023,2007/1/24,C 11,1023,2007/1/10,D ID,会員番号,日付,ステータス,承認 ソートがうまくいかず上記のように並んでいます。 理想としては 9,1023,2007/1/24,D 10,1023,2007/1/24,C 8,1023,2007/1/17,D 11,1023,2007/1/10,D のように日付が新しい方を上にして書き込みたいのです。 2007/1/24のところのソートが上手くいきません。 また、IDの順序も変わると新しいIDをつけるときに困りそうです。 なにかいい方法があったら教えてください。

    • ベストアンサー
    • Perl
  • ファイルメーカーでのソート

    WindowsXP環境にてファイルメーカー5.0を使用しています。データのソートを行う場合昇順とか降順とかの選択はできますが、乱数的にバラバラに並べる方法はありますか? 何がやりたいかというと、データベースで単語帳(マメ単風)を作ったのですが、順番が同じだとパターンで覚えてしまうので、バラバラに並べたいのです。ファイルメーカーで無理なら、なにか別にでも方法がありますでしょうか。よろしくお願いします。

  • CSVファイルを読んでシートに書き込む方法

    エクセルのマクロ(VB6.5)でCSVファイルをよんでシートに書き込みたいのですが誰か教えて下さい。 例えば CSVファイルはこんな感じだとします。 ファイルID:test.csv ファイル内容  (1レコード)123,123,123,123,123,123  (2レコード)456,456,456,456,456  (3レコード)789,789,789,789 書き込むシートは「abcシート」とします。 CSVファイルはカンマ区切りですがレコード毎にカンマ区切りのデータ数が違います。 シートには指定したセルに書き込めば一番いいのですが、上から順番に書き込んでもいいです。 申し訳ありませんが、宜しくお願い致します。

  • Sortコマンド以外で行をソートする方法

    Sortコマンドを使ってテキストファイル内の行をソートしていたのですが、扱うテキストファイルの内容によってエラーが出てしまい、エラーメッセージをWEBで検索して書かれていた対策をしたのですがうまく行きませんでした。 ですので、Sort以外のコマンドで、テキストファイル内の行を昇順と降順でソートしたいと考えているのですが、何か方法はないでしょうか。 Windowsのコマンドプロンプトで使用出来るものであれば、AWKでもPerlでもその他のコマンドでも構いませんし、スクリプトファイルを読み込めるコマンドでしたらスクリプトでの書き方でも結構ですので、ご存知の方がおられましたら教えて頂けないでしょうか。

  • sortコマンドについて

    33 333 22 33 333 33 33 333 11 33 222 11 33 111 11 44 111 11 44 222 11 11 111 11 11 222 11 上記のファイルを以下のようにソートしたいのですが どのようにすればよいでしょうか? 第一ソートキー 1~2番目の昇順 第二ソートキー 4~6番目の降順 第三ソートキー 8~9番目の昇順 (ちなみにspaceはたまたまspaceで区切り文字ではありません) 11 222 11 11 111 11 33 333 11 33 333 22 33 333 33 33 222 11 33 111 11 44 222 11 44 111 11 以下の試して見ましたがうまくいきませんでした。 sort -k 1.1,1.2 -r -k 1.4,1.6 -k 1.8,1.9 test.txt 宜しくお願い致します。

専門家に質問してみよう