Arrow SQL Server is a Rust library for schema-aware, asynchronous SQL Server bulk loading. It plans Arrow schemas, generates SQL Server DDL, validates target tables, and writes batches through a direct Arrow-to-TDS path.
Why Arrow SQL Server?
- Built for Arrow: write
RecordBatchvalues directly instead of converting them into application row objects. - Built for SQL Server: explicit type planning, compatibility profiles, quoted identifiers, target-table validation, and bulk-load diagnostics.
- No ODBC runtime: the production path uses TDS through Tiberius, so your application does not need unixODBC or a Microsoft ODBC driver.
Is It a Good Fit?
| Use Arrow SQL Server when you need | This crate does not provide |
|---|---|
| Arrow-to-SQL Server bulk writes from Rust | SQL Server-to-Arrow reads |
| Streaming writes across one or more batches | Connection pooling, retries, or job orchestration |
| SQL Server-aware schema planning and DDL | A database-agnostic writer abstraction |
| A direct TDS path without an ODBC deployment | Migrations, an ORM, or automatic table publishing workflows |
The crate can generate CREATE TABLE SQL, but it does not create or replace a
table unless your application explicitly executes that SQL.
Install
Arrow SQL Server 0.3 uses Arrow 58 types. Add the crates used by the examples:
The minimum supported Rust version is 1.88.
Write a Batch
The target table must already match the planned schema. New applications should
use WriteOptions::default(); its Auto backend selects the optimized writer.
use RecordBatch;
use ;
async
For a complete first run that creates a table, writes a batch, and verifies the row count, follow Getting Started.
Supported Data
The default planner and both production writers support common Arrow scalar types, including:
- booleans and signed or unsigned integers,
- floating-point values,
- UTF-8 and binary arrays, including Arrow view arrays,
- decimal values up to SQL Server precision 38,
- dates, times, timestamps, and timezone-aware timestamps.
Nested Arrow values and SQL Server-to-Arrow reads are not currently supported. See the complete type-mapping reference for policies, runtime checks, and unsupported types.
SQL Server profiles cover SQL Server 2016, 2017, 2019, 2022, and 2025 with compatibility-level validation.
Learn More
Start here:
- Getting Started: complete your first SQL Server write.
- Type Mapping Reference: check supported Arrow and SQL Server types.
- Performance: understand the benchmark claim and its workload boundaries.
- API Documentation: browse public Rust types and methods.
Advanced and maintainer documentation: