чи є хороша та безкоштовна реалізація синтаксичного аналізатора CSV, доступна за якоюсь ліберальною ліцензією? Якийсь аналог SuperCSV для Java, можливо, порт?
чи є хороша та безкоштовна реалізація синтаксичного аналізатора CSV, доступна за якоюсь ліберальною ліцензією? Якийсь аналог SuperCSV для Java, можливо, порт?
Відповіді:
У CodeProject є приємна реалізація :
Щоб надати більше земних чисел, файл CSV розміром 45 МБ, що містить 145 полів і 50 000 записів, зчитувач обробляв близько 30 МБ / с. Тож загалом це зайняло 1,5 секунди! Характеристики машини були P4 3,0 ГГц, 1024 МБ.
Microsoft.VisualBasic.FileIO.TextFieldParse
і це зробило трюк.
Ви можете завантажити файл CSV у DataTable.
Зразок коду -
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.
спробуйте файлові помічники Працюйте надзвичайно добре. Я використовую його для синтаксичного аналізу файлу розміром 100 МБ щодня.
Ви пробували бібліотеку FileHelpers? Він безкоштовний з відкритим кодом і може використовуватися для синтаксичного аналізу файлів CSV.
Я почав використовувати синтаксичний аналізатор CSV, який є частиною CommonLibrary.NET .
Він використовує .NET 3.5, має простий API та зручні перевантаження / методи та lamda для ітерацій.
У мене немає орієнтирів для цього, як вище, але приємно в цьому те, що це лише один компонент бібліотеки, подібний до Java Commons. Тому я також отримую синтаксичний аналізатор командного рядка, реалізацію сховища, серед іншого.