百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文
Node.js 连接 ClickHouse 并执行 SQL 的方式

Node.js 连接 ClickHouse 并执行 SQL 的方式

  • 网站名称:Node.js 连接 ClickHouse 并执行 SQL 的方式
  • 网站分类:技术文章
  • 收录时间:2025-08-18 04:51
  • 网站地址:

进入网站

“Node.js 连接 ClickHouse 并执行 SQL 的方式” 网站介绍

ClickHouse 凭借列式存储、向量化计算和分布式架构,在实时 OLAP 场景中展现出 “高吞吐写入 + 低延迟查询” 的核心优势,尤其适合 PB 级数据量下的多维度实时分析。结合其丰富的 SQL 支持和灵活的表引擎,能快速对接实时数据流(如 Kafka、Flink),构建端到端的实时数据处理链路。在实际应用中,需通过合理的表设计、写入策略和查询优化,充分发挥其性能潜力。

Node.js 连接 ClickHouse 并执行 SQL 的方式

在 Node.js 中,可通过官方或第三方客户端库连接 ClickHouse,这些库均支持使用 ClickHouse SQL 进行查询,常用库包括:

1.@clickhouse/client(官方推荐)

ClickHouse 官方推出的 Node.js 客户端,支持 TypeScript,API 设计简洁,支持流式查询、参数绑定等功能。

示例代码

import { createClient } from '@clickhouse/client';

// 初始化客户端
const client = createClient({
  host: 'http://localhost:8123', // ClickHouse HTTP 接口地址
  username: 'default',
  password: '', // 默认为空
  database: 'default', // 默认数据库
});

async function queryClickHouse() {
  // 执行 ClickHouse SQL 查询(非 TSQL)
  const result = await client.query({
    query: `
      SELECT event_date, count(*) as total 
      FROM user_events 
      WHERE event_date >= '2023-01-01' 
      GROUP BY event_date 
      ORDER BY event_date
    `,
    format: 'JSONEachRow', // 结果格式
  });

  // 读取结果
  const data = await result.json();
  console.log('查询结果:', data);
}

queryClickHouse().catch(console.error);

2.clickhouse(第三方库)

较早的第三方客户端,支持 HTTP 和 TCP 协议,使用方式相对传统。

示例代码

const ClickHouse = require('clickhouse');

const clickhouse = new ClickHouse({
  host: 'localhost',
  port: 8123,
  user: 'default',
  password: '',
  database: 'default',
});

// 执行 SQL 查询
clickhouse.query(`
  SELECT * FROM system.databases
`).toPromise()
  .then(result => console.log('数据库列表:', result))
  .catch(err => console.error('查询错误:', err));