@jpkli/node-duckdb

DuckDB NodeJS bindings

Showing:

Popularity

Downloads/wk

3

GitHub Stars

21

Maintenance

Last Commit

25d ago

Contributors

7

Package

Dependencies

8

Size (min+gzip)

1.4KB

License

MIT

Type Definitions

Built-In

Tree-Shakeable

No?

Categories

Readme

Node-DuckDB

API | Code Of Conduct | Contributing | Developing

Production ready DuckDB Node.js library written in TypeScript.

Overview

  • This is a library that adds support for DuckDB to NodeJS.
  • It comes preinstalled with DuckDB ver 0.2.6+ with the parquet extension included.
  • Has been tested to work with Linux and MacOS.
  • Currently supports NodeJS v12.17.0+.
  • Supports BIGINT and HUGEINT types as BigInt.
  • Provides a Promise-based API and a Stream-based one.

Getting Started

Installation

To use Node-DuckDB in your project:

npm i node-duckdb

or

yarn add node-duckdb

Note: this will download the duckdb binary for your platform (currently Linux and MacOS are supported), or if it's not available will attempt to build it.

Usage

Using node-duckdb is easy:

const db = new DuckDB();
const connection = new Connection(db);
await connection.execute("SELECT * FROM mytable;");

Promise API example

An example using promises:

import { Connection, DuckDB } from "node-duckdb";

async function queryDatabaseWithIterator() {
  // create new database in memory
  const db = new DuckDB();
  // create a new connection to the database
  const connection = new Connection(db);

  // perform some queries
  await connection.executeIterator("CREATE TABLE people(id INTEGER, name VARCHAR);");
  await connection.executeIterator("INSERT INTO people VALUES (1, 'Mark'), (2, 'Hannes'), (3, 'Bob');");
  const result = await connection.executeIterator("SELECT * FROM people;");

  // fetch and print result
  console.log(result.fetchAllRows());

  // release resources
  connection.close();
  db.close();
}

queryDatabaseWithIterator();

Streaming API example

Getting a stream of data from DuckDB and piping into a destination stream:

import { Connection, DuckDB } from "node-duckdb";
const db = new DuckDB();
const connection = new Connection(db);
const resultStream = await connection.execute("SELECT * FROM people;");
// get destinationStream somehow
resultStream.pipe(destinationStream);

Complete sample project

You can see a complete sample project using node-duckdb here.

API

API documentation is found here.

Known Issues

Known issues and their workarounds are found here.

Developing

Documentation for developers is found here.

Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100