Skip to content

Native NodeJS bindings for chDB, an in-process SQL OLAP Engine powered by ClickHouse

License

Notifications You must be signed in to change notification settings

chdb-io/chdb-node

Repository files navigation

chDB-node

chdb-node

chDB nodejs bindings for fun and hacking.

Status

  • experimental, unstable, subject to changes
  • requires libchdb on the system
  • 👋 C/Node developer? Jump in and help us evolve this prototype into a stable module!

Examples

Query Constructor

const chdb = require('chdb-node');
var result;

// Query (ephemeral)
const db = new chdb.db('CSV') // format
result = db.query("SELECT version()");
console.log(result)

// Query Session (persistent)
const dbdisk = new chdb.db('CSV', '/tmp/mysession') // format, storage path
dbdisk.session("CREATE FUNCTION IF NOT EXISTS hello AS () -> 'chDB'");
result = dbdisk.session("SELECT hello()", "TabSeparated"); // optional format override
console.log(result)

Query (query, format)

const chdb = require('chdb-node').chdb;
var result = chdb.Execute('SELECT version()', 'CSV');
console.log(result) // 23.6.1.1

Session (query, *format, *path)

const chdb = require('chdb-node').chdb;
chdb.Session("CREATE FUNCTION IF NOT EXISTS hello AS () -> 'chDB'")
var result =  = chdb.Session("SELECT hello();")
console.log(result) // chDB

⚠️ Sessions persist table data to disk. You can specify path to implement auto-cleanup strategies:

const temperment = require('temperment');
const tmp = temperment.directory();
chdb.Session("CREATE FUNCTION IF NOT EXISTS hello AS () -> 'chDB'", "CSV", tmp)
var result =  = chdb.Session("SELECT hello();")
console.log(result) // chDB
tmp.cleanup.sync();

About

Native NodeJS bindings for chDB, an in-process SQL OLAP Engine powered by ClickHouse

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project