
以下のような、カンマで区切られたCSVファイルがあるとします。
個人ID,測定日,速度,曜日,エラーチェック
a001,20110212,0,1,0
a001,20110212,5,1,0
a001,20110212,10,1,0
a002,20110212,2,1,1
a002,20110212,8,1,0
a003,20110212,10,1,1
a003,20110212,15,1,0
これが実際には下に4000万行ほど続き、ファイルサイズは2GBを超えます。
そのため、使用しているExcel(2010)では完全に開くことができません。
そして、やりたい作業は以下の2つです。
1、列を絞りたい
たとえば、個人IDと速度、エラーチェックだけ残してあとは消す、など。
2、行でファイルを分割したい
たとえば、a001さんのデータだけを抽出したCSVファイルを別で保存するなど。
最低限、巨大なCSVファイルを扱うことができるエディタがあればよいのですが、上に挙げた作業が簡単にこなせる機能があれば嬉しいです。
また、プログラムはFortran90を扱うことができますので、Fortranによる方法があればそちらでもかまいません。(その場合は、完全でなくてもよいのでソースを書いてくださると助かります。)
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" 入力ファイル名 > 出力ファイル名
以上
No.5
- 回答日時:
早速テストしていただいてありがとうございます。
とても参考になりました。
やはり技術仕様をそのまま鵜呑みにはできないですね。
4000万行というのが凄いですけど。
No.4
- 回答日時:
書き忘れましたけど
Filemakerは30日体験版がありますので是非テストしてみて
結果をお教え下さい。ホントに4000万レコード扱えるのか。
体験版をインストールしたらデスクトップにショートカット
できるので、それにCSVをドロップするだけです。
1も2もメニューから選ぶだけですぐできますから是非お願い
します。
貴重なご意見、ありがとうございます。
Filemakerを試してみました。読み込みはできて、一応やりたかった作業はこなせそうです。
しかし、使用に関して問題点が多く、今回メインで使用することはあきらめました。
問題点は、以下の3つです。(使用PCは、Core-i7採用、16GB RAM、SSD搭載です)
1、読み込みに時間がかかる。(4000万行、2GBで1時間以上かかりました)
2、処理に時間がかかる。(列を1つ消すのに20分くらいかかりました)
3、余計なファイルが作成される。(編集用?に、1.5倍以上の容量のファイルが一緒に保存されました)
かなり便利なツールだとは思いますが、大容量ファイルには向かないのだと思います。
No.3
- 回答日時:
ACCESSのファイルサイズは
2 GB からシステム オブジェクトに必要な領域のサイズを引いた値らしい。
Filemakerは
単一のテーブル内のレコード数:ファイル寿命全体を通じて、合計 64,000 兆
までのレコード
ファイルサイズ : ハードディスクおよび OS の API の能力によって、最大8TB
ですから問題無いと思いますけど。
No.2
- 回答日時:
MS-EXCELではデータ吸うに限界があります。
MS-ACCESSを使えば簡単にできます。
エディタでやるなら、TeraPadはどうですかね?
データ数の限界は知りませんが、パソコンのメモリー限界までいけるんじゃないでしょうか?
2GBということなので、WindowsならXP機ではできないですね。
Windows7で、メモリーを4GB以上積んでいればできるのじゃないでしょうか?
No.1
- 回答日時:
Linuxならgrepとawkでできます。
Windowsならこれを使えば。
http://www.vector.co.jp/soft/winnt/util/se365621 …
http://www.vector.co.jp/soft/win95/util/se376460 …
grepでa001を含む行だけ抽出
awkで特定の項目だけ抽出
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
STEAM版BF4が起動しない
-
jtrim 1.53cが正常な動きをし...
-
いきなりPDF ダウンロード方法
-
パソコン活用方法
-
premiere「ディスク上のファイ...
-
Kritaについて
-
CubesoftPDFはAdobe Acrobat Re...
-
Outlookのエラー表示について
-
既存のプログラムで拡張子HPGの...
-
Windows Media Playerが動作し...
-
画像ファイルの並び替え
-
microsoft teamsの左のアイコン...
-
google サーチコンソロールを設...
-
動画再生ソフトのおすすめあり...
-
LibleOffice Calc のテキストボ...
-
パソコンソフトでお知恵を下さ...
-
VOICEBOXが開けず音声合成エン...
-
fastcopyについて
-
jpeg画像の圧縮
-
iTunesを完全にアンインストー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
パソコン活用方法
-
google サーチコンソロールを設...
-
ChatGPTの回答をコピーしても箇...
-
いきなりPDF ダウンロード方法
-
パソコンソフトでお知恵を下さ...
-
CubesoftPDFはAdobe Acrobat Re...
-
jtrim 1.53cが正常な動きをし...
-
既存のプログラムで拡張子HPGの...
-
Outlookのエラー表示について
-
SketchUp Freeのダウンロードの...
-
premiere「ディスク上のファイ...
-
Windows Media Playerが動作し...
-
インストールしたソフトを別の...
-
STEAM版BF4が起動しない
-
powerAutomateの使用メモリにつ...
-
mp3 ファイルをCDに焼く無料ソ...
-
webメールの表示について
-
Prishwallというソフト
-
コピー元とコピー先を同じにす...
-
fastcopyについて
おすすめ情報