Noundry.Slurp

High-performance CSV to database ingestion tool that processes millions of rows in seconds with zero-allocation parsing and intelligent schema inference.

Blazing Fast Performance

Optimized for speed with zero-allocation CSV parsing and parallel processing capabilities.

100K+
Rows per second
Zero
Memory allocations
4+
Database providers
Smart
Schema inference

Powerful Features

Everything you need for efficient CSV data ingestion into your database.

High Performance

Leverages the SEP library for zero-allocation CSV parsing, achieving exceptional throughput of 100,000+ rows per second.

  • Minimal memory footprint
  • Parallel processing
  • Streaming support

Multi-Database Support

Works seamlessly with all major database providers, adapting to their specific capabilities and optimizations.

  • SQL Server
  • PostgreSQL
  • MySQL & SQLite

Intelligent Features

Smart automation reduces manual configuration while maintaining full control when needed.

  • Automatic schema inference
  • Intelligent indexing
  • Type detection

Installation

Get started with Noundry.Slurp in seconds using your preferred package manager.

Package Installation

$ dotnet add package Noundry.Slurp

Global CLI Tool

$ dotnet tool install --global Noundry.Slurp.Tool

Requirements

  • • .NET 8.0, 9.0, or 10.0 SDK
  • • Supported database (SQL Server, PostgreSQL, MySQL, or SQLite)
  • • CSV files with consistent structure

Usage Examples

Multiple ways to use Slurp for your data ingestion needs.

Interactive Mode

Simple Interactive CLI

# Launch interactive CLI
$ slurp data.csv

? Select database provider: 
 ❯ PostgreSQL
 SQL Server
 MySQL
 SQLite

? Enter server: localhost
? Enter database: mydb
? Enter username: user
? Enter password: ******

✓ Ingested 1,234,567 rows in 12.34 seconds

Features

  • Beautiful interactive prompts guide you through configuration
  • Automatic detection of CSV format and encoding
  • Progress bar with real-time statistics

Command Line Mode

PostgreSQL Example

$ slurp sales_data.csv \
 --provider postgres \
 --server localhost \
 --database analytics \
 --username admin \
 --password secure123 \
 --table sales_2024

SQL Server Example

$ slurp inventory.csv \
 -p sqlserver \
 -s "tcp:myserver.database.windows.net,1433" \
 -d InventoryDB \
 -u sa \
 --password "MyStr0ngP@ssw0rd"

SQLite Example

$ slurp customers.csv \
 --provider sqlite \
 --database "./data/customers.db" \
 --create-if-missing

Library Usage in Code

using Noundry.Slurp;
using Noundry.Slurp.Configuration;

class Program
{
 static async Task Main()
 {
 // Configure the Slurp engine
 var config = new SlurpConfiguration
 {
 Provider = "postgres",
 ConnectionString = "Host=localhost;Database=mydb;Username=user;Password=pass",
 BatchSize = 10000,
 TableName = "target_table"
 };

 // Create the engine and ingest data
 using var engine = new SlurpEngine(config);

 // Subscribe to progress events
 engine.ProgressChanged += (sender, e) =>
 {
 Console.WriteLine($"Progress: {e.PercentComplete:F1}% - {e.RowsPerSecond:N0} rows/sec");
 };

 // Perform the ingestion
 var result = await engine.IngestAsync("data/large_dataset.csv");

 // Check the results
 Console.WriteLine($"✓ Ingested {result.RowsInserted} rows");
 Console.WriteLine($"⚡ Speed: {result.RowsPerSecond:N0} rows/sec");
 Console.WriteLine($"⏱️ Time: {result.Duration}");
 }
}

Advanced Configuration

Schema Customization

var schema = new TableSchema
{
 Name = "products",
 Columns = new[]
 {
 new Column("id", DbType.Int32, isPrimaryKey: true),
 new Column("name", DbType.String, maxLength: 200),
 new Column("price", DbType.Decimal),
 new Column("created", DbType.DateTime)
 }
};

engine.IngestWithSchema("products.csv", schema);

Progress Monitoring

// Subscribe to progress events
engine.ProgressChanged += (sender, e) =>
{
 Console.WriteLine($"Progress: {e.PercentComplete:F1}%");
 Console.WriteLine($"Rows: {e.RowsProcessed:N0} / {e.TotalRows:N0}");
 Console.WriteLine($"Speed: {e.RowsPerSecond:N0} rows/sec");
};

var result = await engine.IngestAsync("huge_file.csv");

Best Practices

Tips and recommendations for optimal performance and reliability.

Performance Tips

  • Use appropriate batch sizes (10,000-50,000 rows) for your database
  • Enable parallel processing for large files (>1M rows)
  • Disable indexes during bulk load, recreate after
  • Use SSD storage for temporary data when possible

Data Preparation

  • Ensure CSV files have consistent structure and encoding
  • Remove or handle special characters in headers
  • Validate date formats match database expectations
  • Consider pre-sorting data by primary key if possible

Ready to Accelerate Your Data Ingestion?

Start using Noundry.Slurp today and experience blazing-fast CSV to database ingestion with intelligent automation.