@fjall/clickhouse

中文文档
39.2.2发布于 2026/11/15SEE LICENSE IN LICENSETypeScriptES Module近 30 天下载 5559

ClickHouse迁移容器的运行时间帮助器——用户提供,SQL文件应用程序,连接重试. 完成由@fjall/组件-基础设施 ClickHouseDatabase 发布的明细合同.

中文使用文档
文档目录5 节
  1. 安装
  2. 合同
  3. 使用量
  4. 滚出你自己的消费者
  5. 许可证

@ fjall/ 点击之家

用于 ClickHouse 迁移容器的运行时间助手 。 计算用户列表 @fjall/components-infrastructure ClickHouseDatabase 可写字的用户 users_local 存储。 此外,还有一艘通用的SQL档案跑车和一个连接-复线助手.

安装

npm install @fjall/clickhouse @clickhouse/client

@clickhouse/client 是同级依赖——消费者提供运行时间客户端.

合同

框架的承诺是外形,而不是这个包的API. 一个客户滚动 他们自己的消费者读 相同的env vars.

新闻 var形状制作人
CLICKHOUSE_MANAGED_USERS贾森 Array<string> 用户名ClickHouseDatabase.getMigrationContributions()
USER_<NAME>_PASSWORD简文(每个管理下的用户输入一个)ECS 执行Role + 秘密管理器( 无运行时间 SDK 调用)

清单中只载有姓名——不包含SML定义的chema admin(XML定义),配置绑定是客户SQL的工作(ALTER USER <name> SETTINGS PROFILE '<profile>') (中文(简体) ).

常数名称 + env-name 帮助者 + schema 活在其中 @fjall/util/migration数字 :

import {
  CLICKHOUSE_MANAGED_USERS_ENV,
  ManagedUserNamesSchema,
  userPasswordEnvName,
} from "@fjall/util/migration";

这批货为了方便而再出口,这样消费者就不需要两批进口了.

使用量

import {
  connectWithRetry,
  createConsoleMigrationLogger,
  createFjallClickHouseClient,
  provisionUsersFromEnv,
  runSqlMigrations,
} from "@fjall/clickhouse";

const logger = createConsoleMigrationLogger("migration-runner");
const client = createFjallClickHouseClient({
  url,
  username,
  password,
  database,
});

await connectWithRetry(client, { label: "user-provision", logger });
await provisionUsersFromEnv({ client, logger });
await runSqlMigrations({ client, dir: "./clickhouse-init", logger });

用 createFjallClickHouseClient。它安装 FjallClickHouseLogger 在WARN,它写每个客户端的日志记录通过 @fjall/util作为组件下的一个遮盖线的日志 ClickHouseClient。一个失败的请求的记录名称是服务器的错误代码,其类,对于这个软件包所知道的代码,其类型,从不引用服务器的消息:该消息可以引用失败的语句及其字面值. 带有请求或答复内容的论据为: [withheld: content],无论它持有: 论点 @clickhouse/client 1.1.8.至 1.24.1 用于语句,请求的URL参数及其约束值,请求或响应头,以及错误消息(读作2026-10-13). 带终端控制序列打印为 [withheld: control characters],而一个带有一个钥匙的争论,或者一个角色JSON写作逃跑,则被忽略. @clickhouse/client属于自己的 createClient 使用其 DefaultLogger,将原始错误和请求的参数打印到控制台;其默认关卡为 @clickhouse/client-common 1.1.8.0和WARN from 1.18.1(读作2026-10-13). 如果你自己打造客户端,通过 log: { LoggerClass: FjallClickHouseLogger, level: ClickHouseLogLevel.WARN },说明关卡,以使对等区域中没有任何版本放弃警告.

一条路在任何伐木者无法到达的地方 当流中的值流 insert 失败, @clickhouse/client (每次释放1.1.8至1.2.4.1, pipelineCb 内 dist/utils/encoder.js,读取 2026-10-13 打印出溪流错误到 console.error 本身,原始, 任何安装的日志。 这个错误是呼叫者自己提出的流; 或者是编译一行扔入的,在客户端的 JSON.stringify 或在一个 json.stringify 您已经提供(a) BigInt, 圆形行, 其信息名称为 财产, 或 其自己的行 toJSON 投掷);或固定节点出错(一个 AbortError,或 socket hang up)当上传被切短或时间被切出. 破坏一个没有行数据的错误的值流, 并且只写入编码的行 .

provisionUsersFromEnv 有能有能 有能有能有能有能有能 CREATE USER IF NOT EXISTS 接下来 ALTER USER 对于每一个明显的入口, 所以反复引用是安全的.

滚出你自己的消费者

上面的Env-var合同是稳定的. 更喜欢自己提供食材的顾客会读取同一种env vars;这个包裹的助手是便利包装. 框架致力于地洞形状,而不是这个包.

如果滚动自己的,你会想复制:

  • 单引出密码文字' → ''在字符串插入之前 IDENTIFIED WITH … BY '…'
  • 任何日志输出中的口令( 使用) maskSensitiveOutput 从 @fjall/util(中文(简体) )
  • 顺序 CREATE USER IF NOT EXISTS 在此之前 ALTER USER 因此,重新提供 调整漂移的证书
  • 在任何移出-随机电磁门前提供设备
  • 字符串插入 SQL 之前的 regex- 校验用户名( CH 不绑定标识参数)

许可证

专有——见 自由主义。 。 。 .

版本与发布记录

@fjall/clickhouse 共发布 150 个版本,首次发布于 2026/05/24;过去 12 个月发布了 150 个版本。

版本发布日期距今
39.2.2latest2026/11/15今天
39.2.12026/11/15今天
39.2.02026/11/124 天前
39.1.02026/11/114 天前
39.0.142026/11/114 天前
39.0.132026/11/087 天前

关于 @fjall/clickhouse 的常见问题

@fjall/clickhouse 是什么?

ClickHouse迁移容器的运行时间帮助器——用户提供,SQL文件应用程序,连接重试. 完成由@fjall/组件-基础设施 ClickHouseDatabase 发布的明细合同.

如何安装 @fjall/clickhouse?

在项目目录运行 npm install @fjall/clickhouse,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@clickhouse/client(^1.18.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@fjall/clickhouse 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@fjall/clickhouse 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@fjall/clickhouse 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=22.3.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@fjall/clickhouse 可以商用吗?

@fjall/clickhouse 使用 SEE LICENSE IN LICENSE 许可。许可条款写在包内的独立文件中,请阅读该文件确认可否商用。以上为概括,不构成法律意见,请以许可原文为准。

@fjall/clickhouse 的下载量有多少?

根据 npm 官方下载统计,@fjall/clickhouse 在 2026/10/15 – 2026/11/13 这 30 天内被下载 5,559 次,日均约 185 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@fjall/clickhouse 还在维护吗?

最新版本 39.2.2 发布于 2026/11/15(今天);至今共发布 150 个版本,其中过去 12 个月发布了 150 个;首次发布于 2026/05/24。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。