Skip to content

ClickHouse/clickhouse-js

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

498 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ClickHouse JS client


NPM Version NPM Downloads

About

Official JS client for ClickHouse, written purely in TypeScript, thoroughly tested with actual ClickHouse versions.

The client has zero external dependencies and is optimized for maximum performance.

The repository consists of three packages:

  • @clickhouse/client - a version of the client designed for Node.js platform only. It is built on top of HTTP and Stream APIs; supports streaming for both selects and inserts.
  • @clickhouse/client-web - a version of the client built on top of Fetch and Web Streams APIs; supports streaming for selects. Compatible with Chrome/Firefox browsers and Cloudflare workers.
  • @clickhouse/client-common - shared common types and the base framework for building a custom client implementation.

Installation

Node.js client:

npm i @clickhouse/client

Web client (browsers, Cloudflare workers):

npm i @clickhouse/client-web

Environment requirements

Node.js

Node.js must be available in the environment to run the Node.js client. The client is compatible with all the maintained Node.js releases.

Node.js version Supported?
24.x
22.x
20.x
18.x Best effort

TypeScript

If using TypeScript, version 4.5 or above is required to enable inline import and export syntax.

Compatibility with ClickHouse

Client version ClickHouse
1.12.0+ 24.8+

The client may work with older versions too; however, this is best-effort support and is not guaranteed.

Quick start

import { createClient } from '@clickhouse/client' // or '@clickhouse/client-web'

const client = createClient({
  url: process.env.CLICKHOUSE_URL ?? 'http://localhost:8123',
  username: process.env.CLICKHOUSE_USER ?? 'default',
  password: process.env.CLICKHOUSE_PASSWORD ?? '',
})

const resultSet = await client.query({
  query: 'SELECT * FROM system.tables',
  format: 'JSONEachRow',
})

const tables = await resultSet.json()
console.log(tables)

await client.close()

See more examples in the examples directory.

Documentation

See the ClickHouse website for the full documentation.

Usage examples

We have a wide range of examples, aiming to cover various scenarios of client usage. The overview is available in the examples README.

Contact us

If you have any questions or need help, feel free to reach out to us in the Community Slack (#clickhouse-js channel) or via GitHub issues.

Contributing

Check out our contributing guide.