https://github.com/seddryck/pocketcsvreader
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.
https://github.com/seddryck/pocketcsvreader
csv csv-parser csv-reader delimited-files
Last synced: 3 months ago
JSON representation
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.
- Host: GitHub
- URL: https://github.com/seddryck/pocketcsvreader
- Owner: Seddryck
- License: apache-2.0
- Created: 2019-01-07T23:20:09.000Z (about 7 years ago)
- Default Branch: main
- Last Pushed: 2025-04-15T08:03:56.000Z (10 months ago)
- Last Synced: 2025-04-15T09:23:33.014Z (10 months ago)
- Topics: csv, csv-parser, csv-reader, delimited-files
- Language: C#
- Homepage: https://seddryck.github.io/PocketCsvReader/
- Size: 957 KB
- Stars: 2
- Watchers: 2
- Forks: 2
- Open Issues: 9
-
Metadata Files:
- Readme: Readme.md
- Contributing: contributing.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
Awesome Lists containing this project
README
# PocketCsvReader

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]: #about (About)
[Install]: #install (Install)
[Quick-start]: #quick-start (Quick-start)
## About
**Social media:** [](https://seddryck.github.io/PocketCsvReader)
[](https://twitter.com/Seddryck)
**Releases:** [](https://github.com/seddryck/PocketCsvReader/releases/latest)
[](https://www.nuget.org/packages/PocketCsvReader/) [](https://github.com/Seddryck/PocketCsvReader/releases/latest) [](https://github.com/Seddryck/PocketCsvReader/blob/master/LICENSE)
**Dev. activity:** [](https://github.com/Seddryck/PocketCsvReader/commits)


**Continuous integration builds:** [](https://ci.appveyor.com/project/Seddryck/PocketCsvReader/)
[](https://ci.appveyor.com/project/Seddryck/PocketCsvReader/build/tests)
[](https://www.codefactor.io/repository/github/seddryck/PocketCsvReader)
[](https://codecov.io/github/Seddryck/PocketCsvReader)
[](https://app.fossa.com/projects/git%2Bgithub.com%2FSeddryck%2FPocketCsvReader?ref=badge_shield)
**Status:** [](https://github.com/Seddryck/PocketCsvReader/stargazers)
[](https://github.com/Seddryck/PocketCsvReader/issues?utf8=%E2%9C%93&q=is:issue+is:open+label:bug+)
[](https://github.com/Seddryck/PocketCsvReader/search?l=C%23)
## Install
Replace `` 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:
```bash
nuget install PocketCsvReader -Version
```
## Visual Studio Package Manager Console
1. Open the **Package Manager Console** from **Tools > NuGet Package Manager > Package Manager Console**.
2. Run the following command:
```powershell
Install-Package PocketCsvReader -Version
```
## Dotnet-CLI
1. Open a terminal or command prompt.
2. Navigate to the directory of your project.
3. Run the following command:
```bash
dotnet add package PocketCsvReader --version
```
## 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:
```csharp
// 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.
```csharp
DataTable dataTable = csvReader.ToDataTable("example.csv");
```
or to read from a stream,
```csharp
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.
```csharp
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(2); // Access the third column of the current row as DateOnly.
}
```
### Reading as Arrays
```csharp
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` method maps CSV records to objects of a specified type.
```csharp
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 people = csvReader.To(stream);
foreach (var person in people)
{
Console.WriteLine($"{person.FirstName} {person.LastName}, Age: {person.Age}");
}
```