Skip to content

PocketCsvReader is a library designed for parsing delimited flat files, such as CSV and TSV. Prioritizing simplicity and performance, it facilitates seamless reading and loading of file contents into a DataTable, Array of strings or through an IDataReader. Perfect for projects needing quick data ingestion with minimal configuration.

License

Notifications You must be signed in to change notification settings

Seddryck/PocketCsvReader

Folders and files

NameName
Last commit message
Last commit date
Jul 31, 2024
Dec 31, 2024
Oct 13, 2019
Feb 21, 2025
Nov 24, 2024
Feb 24, 2025
Feb 9, 2025
Dec 1, 2024
Feb 9, 2025
Jul 31, 2024
Jul 31, 2024
Jul 31, 2024
Dec 1, 2024
Nov 12, 2024
Jul 31, 2024
Dec 24, 2024
Jul 31, 2024
Nov 7, 2024
Jan 7, 2019
Nov 24, 2024
Jan 11, 2025
Jul 31, 2024
Jan 4, 2025
Jul 31, 2024
Nov 30, 2024
Jul 31, 2024
Dec 1, 2024
Nov 24, 2024
Dec 15, 2024

PocketCsvReader

Logo

PocketCsvReader is a highly efficient and lightweight library tailored for parsing delimited flat files like CSV and TSV. With a focus on simplicity and performance, it offers seamless file reading and supports versatile outputs, including DataTables, string arrays, strongly-typed object mapping and an IDataReader interface. Designed for projects requiring rapid data ingestion with minimal configuration, PocketCsvReader is a dependable solution for handling structured flat-file data effortlessly.

About | Install | Quick-start

About

Social media: website twitter badge

Releases: GitHub releases nuget GitHub Release Date licence badge

Dev. activity: GitHub last commit Still maintained GitHub commit activity

Continuous integration builds: Build status Tests CodeFactor codecov FOSSA Status

Status: stars badge Bugs badge Top language

Install

Replace <VersionNumber> with the desired version in each of the following solutions. If no version is specified, the latest version will be installed.

NuGet CLI

  1. Open a command prompt or terminal.

  2. Run the following command:

    nuget install PocketCsvReader -Version <VersionNumber>

Visual Studio Package Manager Console

  1. Open the Package Manager Console from Tools > NuGet Package Manager > Package Manager Console.

  2. Run the following command:

    Install-Package PocketCsvReader -Version <VersionNumber>

Dotnet-CLI

  1. Open a terminal or command prompt.

  2. Navigate to the directory of your project.

  3. Run the following command:

    dotnet add package PocketCsvReader --version <VersionNumber>

Quick-start

The CsvReader class is a flexible and efficient tool for reading and parsing CSV files or streams into various formats, such as DataTable, IDataReader, or strongly-typed objects. This documentation explains the basics of how to use the class, including common use cases and examples.

Features

  • Read CSV files or streams into a DataTable.
  • Access CSV data in a forward-only, read-only manner using IDataReader.
  • Map CSV records to strongly-typed objects.
  • Map CSV records to array of strings.
  • Customizable CSV parsing profiles for delimiters, quote handling, and more.
  • Supports encoding detection through the IEncodingDetector interface.

Initialization

You can create an instance of CsvReader with various configurations:

// Default configuration: comma-delimited, double quotes for escaping, 4 KB buffer size.
var csvReader = new CsvReader();

// Custom CSV profile (e.g., semicolon-delimited, double quotes for escaping).
var csvReaderWithProfile = new CsvReader(CsvProfile.SemiColumnDoubleQuote);

// Custom buffer size for large files.
var csvReaderWithBuffer = new CsvReader(bufferSize: 64 * 1024);

// Both custom profile and buffer size.
var csvReaderCustom = new CsvReader(CsvProfile.SemiColumnDoubleQuote, bufferSize: 16 * 1024);

Reading CSV Data

Reading Into a DataTable

The ToDataTable method reads CSV data and returns a DataTable containing all rows and fields.

DataTable dataTable = csvReader.ToDataTable("example.csv");

or to read from a stream,

using var stream = new FileStream("example.csv", FileMode.Open, FileAccess.Read);
DataTable dataTable = csvReader.ToDataTable(stream);

Accessing Data with IDataReader

The ToDataReader method provides a forward-only, read-only CsvDataReader implementing IDataReader for processing large files efficiently.

using var stream = new FileStream("example.csv", FileMode.Open, FileAccess.Read);
using var reader = csvReader.ToDataReader(stream);
while (reader.Read())
{
    Console.WriteLine(reader[0]); // Access the first column of the current row.
    Console.WriteLine(reader.GetDateTime(1)); // Access the second column of the current row as an object boxing a DateTime.
    Console.WriteLine(reader.GetFieldValue<DateOnly>(2); // Access the third column of the current row as DateOnly.
}

Reading as Arrays

using var stream = new FileStream("example.csv", FileMode.Open, FileAccess.Read);
foreach (var record in csvReader.ToArrayString(stream))
{
    Console.WriteLine(string.Join(", ", record));
}

Mapping Records to Strongly-Typed Objects

The To<T> method maps CSV records to objects of a specified type.

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Age { get; set; }
}

using var stream = new FileStream("example.csv", FileMode.Open, FileAccess.Read);
IEnumerable<Person> people = csvReader.To<Person>(stream);

foreach (var person in people)
{
    Console.WriteLine($"{person.FirstName} {person.LastName}, Age: {person.Age}");
}

About

PocketCsvReader is a library designed for parsing delimited flat files, such as CSV and TSV. Prioritizing simplicity and performance, it facilitates seamless reading and loading of file contents into a DataTable, Array of strings or through an IDataReader. Perfect for projects needing quick data ingestion with minimal configuration.

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Languages