npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@jpkli/node-duckdb

v0.0.3

Published

DuckDB for Node.JS

Downloads

12

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.2 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.