DtPipe.Adapters 1.2.1

dotnet add package DtPipe.Adapters --version 1.2.1
                    
NuGet\Install-Package DtPipe.Adapters -Version 1.2.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="DtPipe.Adapters" Version="1.2.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="DtPipe.Adapters" Version="1.2.1" />
                    
Directory.Packages.props
<PackageReference Include="DtPipe.Adapters" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add DtPipe.Adapters --version 1.2.1
                    
#r "nuget: DtPipe.Adapters, 1.2.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.
#:package DtPipe.Adapters@1.2.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=DtPipe.Adapters&version=1.2.1
                    
Install as a Cake Addin
#tool nuget:?package=DtPipe.Adapters&version=1.2.1
                    
Install as a Cake Tool

DtPipe.Adapters

All built-in provider adapters (readers and writers) for DtPipe. Depends only on DtPipe.Core.


Package

<PackageReference Include="DtPipe.Core" Version="1.0.0" />
<PackageReference Include="DtPipe.Adapters" Version="1.0.0" />

Supported Providers

Provider Reader Writer Prefix
DuckDB duck:
SQLite sqlite:
PostgreSQL pg:
SQL Server mssql:
Oracle ora:
CSV csv: / .csv
JsonL jsonl: / .jsonl
Apache Arrow arrow: / .arrow
Parquet parquet: / .parquet
Generate generate:N
Null null:
Checksum checksum:

Structure

Each adapter family lives in its own folder under Adapters/:

DtPipe.Adapters/
└── Adapters/
    ├── DuckDB/          DuckDbReaderOptions, DuckDbWriterOptions, DuckDbStreamReader, DuckDbDataWriter, ...
    ├── Sqlite/          SqliteReaderOptions, SqliteWriterOptions, SqliteStreamReader, SqliteDataWriter, ...
    ├── PostgreSQL/      PostgreSqlReaderOptions, PostgreSqlWriterOptions, PostgreSqlReader, PostgreSqlDataWriter, ...
    ├── SqlServer/       SqlServerReaderOptions, SqlServerWriterOptions, SqlServerStreamReader, SqlServerDataWriter, ...
    ├── Oracle/          OracleReaderOptions, OracleWriterOptions, OracleStreamReader, OracleDataWriter, ...
    ├── Csv/             CsvStreamReader, CsvDataWriter, ...
    ├── JsonL/           JsonLStreamReader, JsonLDataWriter, ...
    ├── Arrow/           ArrowStreamReader, ArrowDataWriter, ...
    ├── Parquet/         ParquetStreamReader, ParquetDataWriter, ...
    ├── Generate/        GenerateStreamReader (synthetic data)
    └── Checksum/        ChecksumDataWriter

Adapter Contracts

Every adapter implements DtPipe.Core interfaces. Descriptors (in src/DtPipe/Adapters/) wire them into the DI container:

IProviderDescriptor<IStreamReader>  →  registered in DtPipe CLI
IProviderDescriptor<IDataWriter>    →  registered in DtPipe CLI

Options Interfaces

All SQL reader options implement IQueryAwareOptions — the CLI propagates --query automatically.
All SQL writer options implement IKeyAwareOptions — the CLI propagates --key automatically.

public record PostgreSqlReaderOptions : IProviderOptions, IQueryAwareOptions
{
    public static string Prefix => PostgreSqlMetadata.ComponentName;
    public static string DisplayName => "PostgreSQL Reader";
    public string? Query { get; set; }  // set by CliStreamReaderFactory
}

Write Strategies

All SQL writers support the same 6 standardized strategies via --strategy:

Strategy Behaviour
Append INSERT new rows
Truncate TRUNCATE + INSERT
DeleteThenInsert DELETE + INSERT
Recreate DROP + CREATE + INSERT
Upsert UPDATE existing, INSERT new (requires PK)
Ignore INSERT only for missing rows (requires PK)

Adding a New Adapter

  1. Add a new folder under src/DtPipe.Adapters/Adapters/MyProvider/
  2. Create MyProviderMetadata.cs to hold ComponentName, CanHandle, and SupportsStdio.

Standard I/O Support (SupportsStdio)

Providers explicitly declare if they support standard input/output pipes via the SupportsStdio metadata property.

  • Supported: CSV, Parquet, Arrow, JsonL, Null.
  • Unsupported: PostgreSql, SqlServer, Oracle, DuckDB (DataSource), etc.

To use standard I/O, you must use the - character in the connection string:

  • csv:- (Explicit)
  • csv (Shorthand for csv:-)

If you attempt to use - with an unsupported provider (e.g., pg:-), DtPipe will throw an error early. 3. Implement MyProviderStreamReader : IStreamReader and/or MyProviderDataWriter : IDataWriter. 4. Create MyProviderReaderOptions : IProviderOptions, IQueryAwareOptions (if SQL-based). 5. Add a MyProviderReaderDescriptor : IProviderDescriptor<IStreamReader> in src/DtPipe.Adapters/Adapters/MyProvider/. 6. Register in DI in src/DtPipe/Program.cs.

Always prefer using the explicit {ComponentName}: prefix in connection strings to avoid ambiguity.

See EXTENDING.md for a full walkthrough.


License

MIT

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.2.1 0 3/31/2026
1.1.1 122 2/20/2026
1.1.0 106 2/20/2026 1.1.0 is deprecated because it is no longer maintained.