DataDock is a cross-platform data import and schema generation tool designed for engineers who routinely ingest CSV/XLSX files into SQL Server. It infers schemas, generates CREATE TABLE scripts, validates rows, and can push cleaned data directly into a database — all without the fragile ACE/OLEDB provider or the SSMS “Import Data” wizard.
DataDock ships as:
- An Avalonia desktop GUI (the primary user experience)
- A command-line interface (CLI) for automation, scripting, CI pipelines, and power users
- A shared Core library (DataDock.Core) providing schema inference, validation, conversion, mapping, and SQL dialect implementations
-
Workbook-first schema inference
- Detect column names, compute data types, and bucket string lengths into
50, 100, 255, 500, 1000, 2000, 3000, 4000.
- Detect column names, compute data types, and bucket string lengths into
-
Schema generation (
schemagen)- Produce ready-to-run
CREATE TABLESQL for new tables.
- Produce ready-to-run
-
Import pipeline
- Validate, convert, map fields, export JSON, and write to SQL Server tables.
-
Flexible write modes
insert,truncate-insert,upsert(requires key fields).
-
DB-first or Profile-first
- Use DB schemas automatically for existing tables.
- Or define/override behavior via lightweight JSON profiles.
-
Global config (
datadock.config.json)- Default DB connection, schema, column naming style, inference rules.
-
Cross-platform GUI
- Drag/drop workbooks, preview inferred schemas, fix issues inline, import with one click.
-
Zero dependency on ACE/OLEDB
- Works on Linux, macOS, and Windows with pure .NET 8.
Clone and run from source:
git clone <repo-url>
cd DataDock
dotnet restoreRun GUI:
dotnet run --project DataDock.GuiSchemaViz is a new Avalonia desktop app that reuses DataDock.Core/DataDock.Services for read-only schema visualization. It resolves the same datadock.config.json chain, so any defaults you set there (connection string, schema) automatically flow into the UI.
dotnet run --project src/SchemaViz.GuiWhen the window opens:
- The connection panel will pre-fill from
datadock.config.jsonif available. Otherwise, type your SQL Server host (e.g.,localhost,1433when using the provided Docker container), database name, and schema (dboby default). - Click Test Connection to load tables. SchemaViz lists schema-qualified tables on the left; selecting one shows its columns, data types, and nullability on the right.
- Update the datadock config or the UI fields to point at different servers/databases as needed. No data changes occur—SchemaViz only reads metadata.
Run CLI:
dotnet run --project DataDock.Cli -- --helpNeed a quick database to test SchemaViz relationships? A ready-made script lives at samples/sample_schema.sql. It creates a database named SampleWarehouse with five tables (ops.Customers, ops.Products, ops.Orders, ops.OrderItems, ops.Addresses) and the foreign keys between them.
sqlcmd -S localhost,1433 -U sa -P "YourStrong!Passw0rd" -i samples/sample_schema.sqlAfter it runs, point SchemaViz at database SampleWarehouse, schema ops, and you will see interconnected tables you can pan/zoom around.
Full documentation is available inside the /docs folder:
- CLI reference
- Global configuration
- Profiles & schema strategies
- Common workflows
- Architecture overview
- Roadmap
DataDock requires:
- .NET 8 SDK
- SQL Server instance (local or containerized)
Recommended dev setup using Docker:
docker run -e "ACCEPT_EULA=Y" \
-e "SA_PASSWORD=YourStrong!Passw0rd" \
-p 1433:1433 \
--name mssql-dev \
-d mcr.microsoft.com/mssql/server:2022-latestMore examples in docs/WORKFLOWS.md.
Pull requests and issues are welcome!
See CONTRIBUTING.md for guidelines, testing expectations, branching strategy, and coding conventions.
MIT License — free to use, modify, fork, and build upon.
If DataDock saves you hours of frustration:
BTC: bc1qv5jguu4kcfqfgde6aely2n2cs5zkkv4v6g5ma8
GitHub Sponsors: (coming soon)
Buy Me a Coffee / Ko-fi: (coming soon)

