Nerds Publishing Monstrosities

    node-duckdb
    TypeScript icon, indicating that this package has built-in type declarations

    0.0.79 • Public • Published

    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.

    Install

    npm i node-duckdb

    DownloadsWeekly Downloads

    294

    Version

    0.0.79

    License

    MIT

    Unpacked Size

    493 kB

    Total Files

    246

    Last publish

    Collaborators

    • deepcrawl-tech