Skip to content

rprovodenko/node-duckdb

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Node-DuckDB

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.

About

DuckDB NodeJS bindings

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • TypeScript 70.0%
  • C++ 26.7%
  • CMake 1.7%
  • Other 1.6%