跳转到主要内容
输出一个数据目录,其中包含指定 ClickHouse 表的元数据。这些元数据可用于在另一台服务器上创建一个由 web 磁盘 支持的只读数据集对应的 ClickHouse 表。 请勿使用此工具迁移数据。请改用 BACKUPRESTORE 命令

用法

$ clickhouse static-files-disk-uploader [args]

命令

命令说明
-h, --help打印帮助信息
--metadata-path [path]包含指定表元数据的路径
--test-mode启用 test 模式;该模式会将表元数据通过 PUT 请求提交到指定的 URL
--link创建符号链接,而不是将文件复制到输出目录
--url [url]test 模式使用的 Web 服务器 URL
--output-dir [dir]non-test 模式下用于输出文件的目录

获取指定表的 元数据路径

使用 clickhouse-static-files-disk-uploader 时,您必须先获取目标表的 元数据路径。
  1. 运行以下查询,并指定目标表和数据库:

SELECT data_paths
  FROM system.tables
  WHERE name = 'mytable' AND database = 'default';
  1. 这将返回指定表的数据目录路径:

┌─data_paths────────────────────────────────────────────┐
│ ['./store/bcc/bccc1cfd-d43d-43cf-a5b6-1cda8178f1ee/'] │
└───────────────────────────────────────────────────────┘

将表元数据目录导出到本地文件系统

使用目标输出目录 output 和给定的元数据路径,执行以下命令:
$ clickhouse static-files-disk-uploader --output-dir output --metadata-path ./store/bcc/bccc1cfd-d43d-43cf-a5b6-1cda8178f1ee/
如果操作成功,你应会看到以下消息,且 output 目录中应包含指定表的元数据:
Data path: "/Users/john/store/bcc/bccc1cfd-d43d-43cf-a5b6-1cda8178f1ee", destination path: "output"

将表元数据目录导出到外部 URL

此步骤与将数据目录导出到本地文件系统类似,但需要额外添加 --test-mode 标志。无需指定输出目录,而是必须通过 --url 标志指定目标 URL。 启用 test 模式后,表元数据目录会通过 PUT 请求上传到指定的 URL。
$ clickhouse static-files-disk-uploader --test-mode --url http://nginx:80/test1 --metadata-path ./store/bcc/bccc1cfd-d43d-43cf-a5b6-1cda8178f1ee/

使用表元数据目录创建 ClickHouse 表

获得表元数据目录后,您就可以用它在另一台服务器上创建 ClickHouse 表。 请参阅此 GitHub 仓库了解演示。在该示例中,我们使用 web 磁盘创建表,这使我们能够将该表关联到另一台服务器上的数据集。
最后修改于 2026年6月10日