A DuckDB plugin for Tabularis, the lightweight database management tool.
This plugin enables Tabularis to work with DuckDB databases — both file-based and in-memory — providing full schema inspection, CRUD operations, view management, and DDL generation through a JSON-RPC 2.0 over stdio interface.
Discord - Join our discord server and chat with the maintainers.
- Features
- Supported DuckDB Data Types
- Installation
- How It Works
- Supported Operations
- Building from Source
- Development
- Changelog
- License
- File-based & In-memory databases — Open
.duckdbfiles or work with ephemeral in-memory databases. - Schema Inspection — Browse tables, columns, primary keys, foreign keys, and indexes.
- View Management — Create, alter, drop, and inspect views with full metadata.
- SQL Execution — Run any SQL query with automatic pagination for SELECT statements.
- Inline Editing — Insert, update, and delete records directly from the Tabularis data grid.
- DDL Generation — Generate CREATE TABLE, ALTER TABLE, CREATE INDEX, and FOREIGN KEY statements.
- Schema Snapshot — Fetch full schema metadata (tables, columns, foreign keys) in a single call.
- BLOB Support — Handle binary data with base64 encoding and file reference wire formats.
- Complex Types — Full support for DuckDB-specific types: LIST, MAP, STRUCT, UNION, ENUM, and more.
- Bundled DuckDB — Statically embeds DuckDB; no external dependencies required at runtime.
- Cross-platform — Pre-built binaries for Linux (x86_64, aarch64), macOS (x86_64, aarch64), and Windows (x86_64).
| Category | Types |
|---|---|
| Numeric | TINYINT, SMALLINT, INTEGER, BIGINT, HUGEINT, UTINYINT, USMALLINT, UINTEGER, UBIGINT, UHUGEINT, FLOAT, DOUBLE, DECIMAL |
| String | VARCHAR, TEXT, UUID, ENUM |
| Date/Time | DATE, TIME, TIMESTAMP, TIMESTAMP WITH TIME ZONE, TIMESTAMP_NS, TIMESTAMP_MS, TIMESTAMP_S, TIME WITH TIME ZONE, INTERVAL |
| Binary | BLOB |
| JSON | JSON |
| Composite | LIST, MAP, STRUCT, UNION |
| Other | BOOLEAN, BIT |
If your version of Tabularis supports plugin management, the DuckDB plugin can be installed directly from the application.
- Download the latest release for your platform from the Releases page.
- Extract the archive.
- Copy
tabularis-duckdb-plugin(ortabularis-duckdb-plugin.exeon Windows) andmanifest.jsoninto the Tabularis plugins directory:
| OS | Plugins Directory |
|---|---|
| Linux | ~/.local/share/tabularis/plugins/duckdb/ |
| macOS | ~/Library/Application Support/com.debba.tabularis/plugins/duckdb/ |
| Windows | %APPDATA%\com.debba.tabularis\plugins\duckdb\ |
- Restart Tabularis.
The plugin is a standalone Rust binary that communicates with Tabularis through JSON-RPC 2.0 over stdio:
- Tabularis spawns the plugin as a child process.
- Requests are sent as newline-delimited JSON-RPC messages to the plugin's
stdin. - Responses are written to
stdoutin the same format.
This architecture keeps the plugin fully isolated — no shared memory, no network ports, no external dependencies.
| Method | Description |
|---|---|
test_connection |
Verify database connectivity |
get_databases |
List databases |
get_schemas |
List schemas |
get_tables |
List tables in a schema |
get_columns |
Get column metadata for a table |
get_foreign_keys |
Get foreign key constraints |
get_indexes |
Get indexes for a table |
get_views |
List all views |
get_view_definition |
Get SQL definition of a view |
get_view_columns |
Get columns for a view |
create_view |
Create a new view |
alter_view |
Modify an existing view |
drop_view |
Drop a view |
execute_query |
Execute SQL with pagination support |
insert_record |
Insert a new row |
update_record |
Update a cell by primary key |
delete_record |
Delete a row by primary key |
get_schema_snapshot |
Full schema dump in one call |
get_all_columns_batch |
All columns for all tables |
get_all_foreign_keys_batch |
All foreign keys for all tables |
get_create_table_sql |
Generate CREATE TABLE DDL |
get_add_column_sql |
Generate ADD COLUMN DDL |
get_alter_column_sql |
Generate ALTER COLUMN DDL |
get_create_index_sql |
Generate CREATE INDEX DDL |
get_create_foreign_key_sql |
Generate FOREIGN KEY DDL |
drop_index |
Drop an index |
drop_foreign_key |
Drop a foreign key constraint |
- Rust (edition 2021)
cargo build --releaseThe binary will be located at target/release/tabularis-duckdb-plugin.
A convenience script is provided to build and copy the plugin to the Tabularis plugins directory:
./sync.shTwo development binaries are included for testing:
Direct DuckDB test:
cargo run --bin testSimulated Tabularis integration test (spawns the plugin and sends JSON-RPC requests via stdio):
cargo run --bin test_plugin- Language: Rust (edition 2021)
- Database: DuckDB v1.1.1 (bundled/statically linked)
- Serialization: serde + serde_json
- Protocol: JSON-RPC 2.0 over stdio
Apache License 2.0
