大きな CSV ファイルの読み取りを処理するための適切なプログラムはありますか? 私が扱うデータファイルのいくつかは、1 GB の範囲にあります。行数が多すぎて、Excel で処理することすらできません。Access を使用すると、実際にデータベースにインポートして直接操作する必要があるため、少し時間がかかる場合があります。大きな CSV ファイルを開き、データを簡単かつ迅速にスキャンするのに役立つ単純なスプレッドシート レイアウトを提供できるプログラムはありますか?
7 に答える
MySQLは、コマンドを使用してCSVファイルをテーブルに非常にすばやくインポートできますLOAD DATA INFILE
。また、 CSVストレージエンジンを使用して、インポート手順をバイパスして、CSVファイルから直接読み取ることもできます。
を使用してネイティブテーブルにインポートするにLOAD DATA INFILE
は、初期費用がかかりますが、その後は、INSERT/UPDATE
インデックスフィールドと同様にはるかに高速になります。CSVストレージエンジンの使用は、最初はほとんど瞬時に行われますが、高速になるのはシーケンシャルスキャンのみです。
更新:この記事( Instant Data Loadsというタイトルのセクションまでスクロールダウン)では、CSVデータをMySQLにロードするための両方のアプローチの使用について説明し、例を示します。
reCSVeditorは、大きな CSV ファイルを編集するための優れたプログラムであることがわかりました。不要な列を取り除くのに理想的です。ファイル 1,000,000 レコード ファイルに非常に簡単に使用しました。
vEditはこれに最適です。私は定期的に100メガ以上のファイルを開きます(あなたが最大1ギグと言ったのは知っていますが、彼らはサイトでその2倍を処理できると宣伝していると思います)。正規表現のサポートと他の多くの機能があります。あなたがそれでできる量で70ドルは安いです。
真のスプレッドシート静的フィールド サイズ ビューに接続していない場合、GVim はそのサイズのファイルを無料で処理できます。
データをメモリに収めることができ、Pythonが好きな場合は、AugustusのUniTable部分を確認することをお勧めします。(免責事項:Augustusはオープンソース(GPLv2)ですが、私はそれを作成している会社で働いています。)
それはあまりよく文書化されていませんが、これはあなたが始めるのに役立つはずです。
from augustus.kernel.unitable import *
a = UniTable().from_csv_file('filename')
b = a.subtbl(a['key'] == some_value) #creates a subtable
優れたインターフェースを直接提供することはできませんが、少しの作業で多くの統計をすばやく取得できます。
それは、実際にデータで何をしたいかによって異なります。このような大きなテキスト ファイルを考えると、通常、一度にデータの小さなサブセットのみが必要になるため、検索して操作したい部分を引き出すための「grep」などのツールを見逃さないでください。