• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:巨大なCSVファイルを編集したい)

巨大なCSVファイル編集の方法とは?

このQ&Aのポイント
  • 巨大なCSVファイルを編集するためのエディタやプログラムの選択肢は?
  • 巨大なCSVファイルを扱うためにはExcelでは不十分なので、他の方法を探す必要があります。
  • 列の絞り込みや行の分割などの作業を簡単にこなすためには、専用のツールやプログラムが必要です。

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

  • ベストアンサー
回答No.6

そりゃExcelのワークシートには読み込める行数の制限はありますが、 VBAでファイルの読み書きをする分には問題ないはず。(ただ、3GB位のテキスト ファイルを読んだことがあるだけで、大容量のファイルの書き出しは したことはないのだけれど。この時のExcelのバージョンは2000です。) 以下、VBAのサンプル。 Sub 列を絞る() fno1 = FreeFile Open "入力ファイル名" For Input As fno1 fno2 = FreeFile Open "出力ファイル名" For Output As fno2 Do While Not EOF(fno1) Input #fno1, a1, a2, a3, a4, a5 Write #fno2, a1, a3, a5 ' a1 の前後に"(ダブルコーテーション)が挿入されます。 ' 都合が悪ければ以下を使用のこと。 ' Print #fno2, CStr(a1); ","; CStr(a3); ","; CStr(a5) Loop Close fno1 Close fno2 End Sub Sub 行を分割() fno1 = FreeFile Open "入力ファイル名" For Input As fno1 fno2 = FreeFile Open "出力ファイル名" For Output As fno2 Do While Not EOF(fno1) Input #fno1, a1, a2, a3, a4, a5 If a1 = "a001" Then Write #fno2, a1, a2, a3, a4, a5 End If Loop Close fno1 Close fno2 End Sub フリーウェアを使用するのに制限がないのなら、No.1さんのgrep, awkを使用するのが お勧めです。特にプログラムを書かなくても(書いても1行程度)実行可能なのが魅力です。 列を絞る場合:   awk -F, '{ OFS=","; print $1, $3, $5; }' 入力ファイル名 > 出力ファイル名 行を分割する場合:   grep "a001" 入力ファイル名 > 出力ファイル名 以上

tarte777
質問者

お礼

大変丁寧に説明してくださって、ありがとうございます。 無事に目的を達成することができました。

その他の回答 (5)

  • chieffish
  • ベストアンサー率44% (1149/2554)
回答No.5

早速テストしていただいてありがとうございます。 とても参考になりました。 やはり技術仕様をそのまま鵜呑みにはできないですね。 4000万行というのが凄いですけど。

  • chieffish
  • ベストアンサー率44% (1149/2554)
回答No.4

書き忘れましたけど Filemakerは30日体験版がありますので是非テストしてみて 結果をお教え下さい。ホントに4000万レコード扱えるのか。 体験版をインストールしたらデスクトップにショートカット できるので、それにCSVをドロップするだけです。 1も2もメニューから選ぶだけですぐできますから是非お願い します。

tarte777
質問者

お礼

貴重なご意見、ありがとうございます。 Filemakerを試してみました。読み込みはできて、一応やりたかった作業はこなせそうです。 しかし、使用に関して問題点が多く、今回メインで使用することはあきらめました。 問題点は、以下の3つです。(使用PCは、Core-i7採用、16GB RAM、SSD搭載です) 1、読み込みに時間がかかる。(4000万行、2GBで1時間以上かかりました) 2、処理に時間がかかる。(列を1つ消すのに20分くらいかかりました) 3、余計なファイルが作成される。(編集用?に、1.5倍以上の容量のファイルが一緒に保存されました) かなり便利なツールだとは思いますが、大容量ファイルには向かないのだと思います。

  • chieffish
  • ベストアンサー率44% (1149/2554)
回答No.3

ACCESSのファイルサイズは  2 GB からシステム オブジェクトに必要な領域のサイズを引いた値らしい。 Filemakerは  単一のテーブル内のレコード数:ファイル寿命全体を通じて、合計 64,000 兆                 までのレコード  ファイルサイズ : ハードディスクおよび OS の API の能力によって、最大8TB ですから問題無いと思いますけど。

  • Gletscher
  • ベストアンサー率23% (1525/6504)
回答No.2

MS-EXCELではデータ吸うに限界があります。 MS-ACCESSを使えば簡単にできます。 エディタでやるなら、TeraPadはどうですかね? データ数の限界は知りませんが、パソコンのメモリー限界までいけるんじゃないでしょうか? 2GBということなので、WindowsならXP機ではできないですね。 Windows7で、メモリーを4GB以上積んでいればできるのじゃないでしょうか?

  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.1

Linuxならgrepとawkでできます。 Windowsならこれを使えば。 http://www.vector.co.jp/soft/winnt/util/se365621.html http://www.vector.co.jp/soft/win95/util/se376460.html grepでa001を含む行だけ抽出 awkで特定の項目だけ抽出

関連するQ&A