FastCsvParser 1.1.1

dotnet add package FastCsvParser --version 1.1.1                
NuGet\Install-Package FastCsvParser -Version 1.1.1                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="FastCsvParser" Version="1.1.1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add FastCsvParser --version 1.1.1                
#r "nuget: FastCsvParser, 1.1.1"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install FastCsvParser as a Cake Addin
#addin nuget:?package=FastCsvParser&version=1.1.1

// Install FastCsvParser as a Cake Tool
#tool nuget:?package=FastCsvParser&version=1.1.1                

CsvParser

Fast read data with CSV format according to RFC4180 with small extensions. Best solution for parse very large data files

Key Features

  • Speed
  • Support standart RFC4180
  • Support async read operations for a network or some other slow to read functionality
  • No dependencies and a simple code base
  • Simple to use

Usage example

using System;
using System.IO;
using System.Linq;
using System.Text;

namespace CsvTest
{
    class Program
    {
        static void Main(string[] args)
        {
// Get file name our CSV file
            var input = args[0];

            using (var stream = File.OpenRead(input))
            using (var parser = new CsvParser.CsvReader(stream, Encoding.UTF8, 
// Include quotes (if exists) in result
// default WithQuotes = false, i.e. column value "'test'" translated to 'test'
                new CsvParser.CsvReader.Config() { WithQuotes = true }))
            {
// Read CSV header
                if (!parser.MoveNext())
                    throw new InvalidDataException();
                var header = parser.Current.ToArray();

                while (parser.MoveNext())
                {
// Read CSV row data
                    var row = parser.Current.ToArray();
// or column data
                    var col0 = parser.Current[0];
                }
            }
        }
    }
}

Performance test

Define data

File size 199475243 bytes, and 3337349 rows

var buffer = new MemoryStream();
using (var stream = File.OpenRead(input))
    stream.CopyTo(buffer);

Simple read text data in file with encoding

using (var reader = new StreamReader(buffer, Encoding.UTF8))
{
    string line;
    while ((line = reader.ReadLine()) != null) ;
}

Read and parse data from CsvReader (without read columns)

using (var parser = new CsvParser.CsvReader(buffer, Encoding.UTF8))
{
    while (parser.MoveNext()) ;
}

Read and parse data from CsvReader with read first column data

using (var parser = new CsvParser.CsvReader(buffer, Encoding.UTF8))
{
    while (parser.MoveNext())
    {
        var data = parser.Current[0];
    }    
}

Read and parse data from CsvReader with read all column data (10 columns)

using (var parser = new CsvParser.CsvReader(buffer, Encoding.UTF8))
{
    while (parser.MoveNext())
    {
        var data = parser.Current.ToArray();
    }    
}

Results of execution in seconds below in table:

simple read CsvReader parse CsvReader parse and read one column CsvReader parse and read 10 columns
--0.4206415 --------1.1696580 -------------------------------1.2340430 --------------------------------3.0415450

Other very popular library execute in 4.5114237 sec on the same data, but not compiled on .net standard < 2.0

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp1.0 was computed.  netcoreapp1.1 was computed.  netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard1.6 is compatible.  netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net20 is compatible.  net35 is compatible.  net40 was computed.  net403 was computed.  net45 is compatible.  net451 was computed.  net452 was computed.  net46 was computed.  net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen30 was computed.  tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETFramework 2.0

    • No dependencies.
  • .NETFramework 3.5

    • No dependencies.
  • .NETFramework 4.5

    • No dependencies.
  • .NETStandard 1.6

  • .NETStandard 2.0

    • No dependencies.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on FastCsvParser:

Package Downloads
KPX.LibFFXIV.GameData

This library includes typeprovider for accessing SaintCoinach's raw datadump.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.1.1 20,362 3/30/2018
1.1.0 1,796 3/30/2018
1.0.0 990 3/29/2018