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");

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

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

Query (query, format)

const chdb = require("chdb-node").chdb;
var result = chdb.Execute("SELECT version()", "CSV");
console.log(result) // 23.10.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

 

Contributors 8