dart_duckdb 1.1.3 copy "dart_duckdb: ^1.1.3" to clipboard
dart_duckdb: ^1.1.3 copied to clipboard

Provides lightweight yet convenient bindings to DuckDB by using dart:ffi

DuckDB.Dart #

DuckDB.Dart is the native Dart API for DuckDB, enabling developers to harness the power of DuckDB in Dart-based applications across Apple, iOS, Android, Linux, and Windows platforms.

DuckDB Overview #

DuckDB is a high-performance analytical database system known for its speed, reliability, and ease of use. It supports a comprehensive SQL dialect, offering features such as:

  • Arbitrary and nested correlated subqueries
  • Window functions
  • Collations
  • Complex types (arrays, structs)

For more information on DuckDB's goals and capabilities, visit the Why DuckDB page.

DuckDB.Dart #

DuckDB.Dart is the native Dart API for DuckDB, enabling developers to harness the power of DuckDB in Dart-based applications across Apple, iOS, Android, Linux, and Windows platforms.

DuckDB Overview #

DuckDB is a high-performance analytical database system known for its speed, reliability, and ease of use. It supports a comprehensive SQL dialect, offering features such as:

  • Arbitrary and nested correlated subqueries
  • Window functions
  • Collations
  • Complex types (arrays, structs)

For more information on DuckDB's goals and capabilities, visit the Why DuckDB page.

Usage Examples #

Here are some common use cases for DuckDB.Dart:

Querying a Database #

import 'package:dart_duckdb/dart_duckdb.dart';

void main() {
  final db = duckdb.open(":memory:");
  final connection = db.connect();

  connection.execute('''
    CREATE TABLE users (id INTEGER, name VARCHAR, age INTEGER);
    INSERT INTO users VALUES (1, 'Alice', 30), (2, 'Bob', 25);
  ''');

  final result = connection.query("SELECT * FROM users WHERE age > 28").fetchAll();

  for (final row in result) {
    print(row);
  }

  connection.close();
  db.close();
}

Queries on background Isolates #

import 'package:dart_duckdb/dart_duckdb.dart';

void main() {
  final db = duckdb.open(":memory:");
  final connection = db.connect();

  await Isolate.spawn(backgroundTask, db.transferrable);

  connection.close();
  db.close();
}

void backgroundTask(TransferableDatabase transferableDb) {
  final connection = duckdb.connectWithTransferred(transferableDb);
  // Access database ...
  // fetch is needed to send the data back to the main isolate
}

Contributing #

We welcome contributions to DuckDB.Dart! If you have suggestions for improvements or bug fixes, please follow these steps:

  1. Fork the repository.
  2. Create a new branch for your feature or bug fix.
  3. Make your changes and commit them with descriptive messages.
  4. Push your changes to your fork.
  5. Create a pull request with a detailed description of your changes.

Support and Contact #

If you encounter any issues or have questions, please check our issue tracker


Building DuckDB.Dart from Source #

Install Dependencies #

Install fvm, Getting Started

Install any platform dependencies for DuckDB. Here are the DuckDB Building Instructions. Also, the github workflows are the best examples to learn from.

Build DuckDB #

Run make from this project to build/patch duckdb.

MacOS Universal

To build for MacOS:

make macos

iOS (Requires iOS SDK)

To build for an iOS device:

make ios_device

To build for an iOS simulator:

make ios_simulator

Android (Requires Android NDK)

To build for Android:

make android

Windows (Requires MINGW64)

cd windows && ./getduck.ps1

Linux

To build for Linux:

make linux

Build DuckDB.Dart #

make build
6
likes
130
pub points
63%
popularity

Publisher

verified publishertigereye.com

Provides lightweight yet convenient bindings to DuckDB by using dart:ffi

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

async, collection, ffi, intl, meta, path, uuid

More

Packages that depend on dart_duckdb