2009-05-25 9 views
88

いくつかの自由なライセンスの下で利用可能なCSVパーサーの良いと無料の実装はありますか? Java用のSuperCSVの一部、おそらくポート?C#のCSVパーサー/リーダー?

+2

http://stackoverflow.com/questions/3507498/reading-csv-file –

+5

Microsoft.VisualBasic.FileIO.TextFieldParserを使用しています。 –

+1

[.CSVを解析するトップ6の方法?高性能!](http://izlooite.blogspot.com/2011/06/top-6-ways-to-parse-csv-high.html) –

答えて

70

FileHelpers Open Source LibraryCodeProjectの素敵な実装があります

+23

FileHelpers(少なくともCSV用)では、「ソース(ファイル)内のレコードにマップするクラスを定義する」、「レコードマッピングクラスを宣言する必要があります」などが必要です。私はCSVをDataTableに変換したいと思います。 –

53

145個のフィールドと50,000レコードを含む45メガバイトのCSVファイルを使用して、地球の番号までより多くを与えるために、読者は/秒、約30 MBが処理していました。だから全部で1.5秒かかりました!マシン仕様は、P4 3.0 GHz、1024 MBでした。

+0

(私の+1を取り戻す):私はlumenworks Fast CSVリーダーを53Mbファイルで破っただけです。行のキャッシュが43,000行後に失敗し、バッファをスクランブルしたように見えます。 'Microsoft.VisualBasic.FileIO.TextFieldParse'を試してみて、それはやってみました。 –

7

try filehelpers驚くほどうまく動作します。私はそれを毎日100 MBのファイルを解析するために使用しています。

4

FileHelpersライブラリを試しましたか?これは無料のオープンソースで、CSVファイルの解析に使用できます。

3

私はCommonLibrary.NETの一部であるCSVパーサを使用し始めました。

.NET 3.5を使用し、簡単なAPIを持ち、便利なオーバーロード/メソッド&ラムダを繰り返します。

私は上記のようなベンチマークを持っていませんが、Java Commonsに似たライブラリのコンポーネントの1つであることが良い点です。だから私はまた、コマンドラインパーサー、リポジトリの実装を他のものの間で取得します。

10

DataTableにCSVファイルを読み込むことができます。

サンプルコード -

static DataTable CsvToDataTable(string strFileName) 
{ 
    DataTable dataTable = new DataTable("DataTable Name"); 

    using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0; Data Source = " + Directory.GetCurrentDirectory() + "; Extended Properties = \"Text;HDR=YES;FMT=Delimited\"")) 
    { 
     conn.Open(); 
     string strQuery = "SELECT * FROM [" + strFileName + "]"; 
     OleDbDataAdapter adapter = 
      new System.Data.OleDb.OleDbDataAdapter(strQuery, conn); 
     adapter.Fill(dataTable); 
    } 
    return dataTable; 
} 

あなたはx86プロセッサにプロジェクトをコンパイルしていることを確認します。 x64では動作しません。

+1

これは、私が組み込みのODBCまたはOLEDBライブラリを使いたかったので、私にとってはうまく機能しました。 Btwの場合、次のコードサンプルはOLEDBとODBCの両方に追加されています。http://www.csvreader.com/csv_benchmarks.php – Meringros

+5

これは64ビットで動作しません。 – DenNukem

+0

このアンサーに関して役に立つかもしれない2つのリンク: 1. [C#チュートリアル - 組み込みOLEDB CSVパーサー](http://tech.pro/tutorial/803/csharp-tutorial-using-the-built-2. [DataReader GetSchemaTableメソッドとVisual C#.NETを使用して列スキーマを取得する方法](http://support.microsoft.com/kb/310107)先頭へ戻るこの資料は以下の製品について記述したものです。 – shawad