Open source · MIT · .NET Standard 2.0

The open-source ETL toolkit for .NET.

EtlKit is a lightweight ETL (extract · transform · load) library and data integration toolbox for .NET. Build your own data pipelines programmatically in C# — readable, testable, and tracked in source control like the rest of your code.

$ dotnet add package EtlKit

Code your ETL, not boilerplate.

A comprehensive C# class library that manages your whole ETL or ELT — with control-flow tasks that replace ADO.NET ceremony with one line of readable code.

Build ETL in .NET

Write pipelines in your favourite .NET language, fitting your team's skills and a mature toolset. Source, transform and destination components compose into a flow.

Runs everywhere

Written in .NET Standard 2.0 and tested on Linux, macOS and Windows with current .NET Core & .NET. Develop and debug locally on your desktop.

Made for big data

Built on Microsoft's TPL Dataflow with per-component buffers and async, in-memory processing — designed to move large volumes with high throughput.

Manage change

Track ETL logic in git, review it, and run it through your existing CI/CD. A fully functional alternative to GUI tools like SSIS.

Pipeline.cs
// Read from a CSV, bump a value, write to a database table
var source = new CsvSource<Row>("input.csv");

var transform = new RowTransformation<Row, Row>(row => {
    row.Value += 1;
    return row;
});

var dest = new DbDestination<Row>(connection, "DestinationTable");

source.LinkTo(transform);
transform.LinkTo(dest);

source.Execute();
dest.Wait();

Connect to what you already use.

Source and destination components for the most common databases, queues and file types — and a CustomSource / CustomDestination for anything else.

CategorySupport for
DatabasesSQL Server, Postgres, SQLite, MySQL, ClickHouse
Queues & streamingKafka (full), RabbitMQ (destination)
Flat filesCSV, JSON, XML
OfficeMicrosoft Access, Excel (source)
APIREST, OpenAI
Memory.NET IEnumerable & collections