Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

使用 clickhouse-client 将数据插入到 ClickHouse Cloud

All quickstarts
实时分析数据仓储可观测性AI/MLCloud

前置条件

你还应完成以下快速入门:

你将构建的内容

在本快速入门中,你将使用 clickhouse-client (官方的 ClickHouse 命令行客户端) ,将本地 CSV file 中的数据插入到 ClickHouse Cloud 服务中。 你将安装 clickhouse-client,准备一个样本数据集,连接到你的 Cloud 服务,创建一张表,并从本地机器插入数据。 完成后,你将了解如何使用 clickhouse-client 将本地文件加载到 ClickHouse Cloud;这一工作流适用于 CSV、Parquet、JSON 以及许多其他格式。

安装 clickhouse-client

clickhouse-client 是连接 ClickHouse 的官方 CLI,包含在 ClickHouse 二进制可执行文件中。

使用通用安装程序进行安装:

curl https://clickhouse.com/ | sh

这会将最新的 clickhouse 可执行文件下载到当前目录。验证安装是否成功:

./clickhouse client --version

你应该会看到显示 ClickHouse 版本号的输出,这表明 clickhouse-client 已可使用。

准备一个样例 CSV 文件

创建一个小型样例 CSV 文件,以便本快速入门内容完整,可独立完成。请在终端中运行以下命令:

cat <<'EOF' > sample_data.csv
timestamp,event_type,user_id,duration_ms,status
2024-01-15 10:30:00,page_view,1001,120,success
2024-01-15 10:31:15,click,1002,45,success
2024-01-15 10:32:00,page_view,1003,200,success
2024-01-15 10:33:30,purchase,1001,1500,success
2024-01-15 10:34:00,click,1004,60,error
2024-01-15 10:35:45,page_view,1002,95,success
2024-01-15 10:36:10,purchase,1005,2200,success
2024-01-15 10:37:00,click,1003,30,success
2024-01-15 10:38:20,page_view,1004,150,error
2024-01-15 10:39:00,purchase,1002,1800,success
EOF

连接到你的 Cloud 服务

以下命令假定你已按照获取你的 Cloud 连接信息快速入门中的说明,将 CLICKHOUSE_HOSTCLICKHOUSE_USERCLICKHOUSE_PASSWORD 导出为环境变量。如果还没有,你也可以直接替换为你自己的值。

通过对你的 Cloud 服务运行一个简单查询来测试连通性:

./clickhouse client \
  --host $CLICKHOUSE_HOST \
  --port 9440 \
  --user $CLICKHOUSE_USER \
  --password $CLICKHOUSE_PASSWORD \
  --secure \
  -q "SELECT 1"

如果连接成功,终端会输出 1。如果出现连接错误,请检查你的服务是否已在 Cloud 控制台中启动,以及主机名和密码是否正确。

创建目标表并插入数据

首先,在您的 Cloud 服务中创建一个用于接收这些数据的表:

./clickhouse client \
  --host $CLICKHOUSE_HOST \
  --port 9440 \
  --user $CLICKHOUSE_USER \
  --password $CLICKHOUSE_PASSWORD \
  --secure \
  -q "
    CREATE TABLE IF NOT EXISTS events (
      timestamp DateTime,
      event_type LowCardinality(String),
      user_id UInt32,
      duration_ms UInt32,
      status LowCardinality(String)
    )
    ENGINE = MergeTree
    ORDER BY (event_type, timestamp)
  "

现在插入本地 CSV 文件中的数据。这是关键一步——clickhouse-client 会从 stdin 读取该文件,并将其流式发送到远程服务:

./clickhouse client \
  --host $CLICKHOUSE_HOST \
  --port 9440 \
  --user $CLICKHOUSE_USER \
  --password $CLICKHOUSE_PASSWORD \
  --secure \
  -q "INSERT INTO events FORMAT CSVWithNames" < sample_data.csv

clickhouse-client 会将 CSV 文件内容直接发送到你的 Cloud 服务。CSVWithNames 格式会告知 ClickHouse,第一行包含列名。

验证数据是否已插入

查询您的 Cloud 服务,确认这些行已写入:

./clickhouse client \
  --host $CLICKHOUSE_HOST \
  --port 9440 \
  --user $CLICKHOUSE_USER \
  --password $CLICKHOUSE_PASSWORD \
  --secure \
  -q "SELECT count() FROM events"

你应该会看到 10,即示例 CSV 中的行数。

预览数据:

./clickhouse client \
  --host $CLICKHOUSE_HOST \
  --port 9440 \
  --user $CLICKHOUSE_USER \
  --password $CLICKHOUSE_PASSWORD \
  --secure \
  -q "SELECT * FROM events ORDER BY timestamp LIMIT 5"

同样的工作流也适用于 Parquet、TSV、JSON、Avro、ORC 以及许多其他支持的格式——只需更改 FORMAT 子句,并将相应文件通过管道传入即可。

后续步骤

在本快速入门中,你安装了 clickhouse-client,将其连接到 ClickHouse Cloud 服务,并使用它将本地 CSV file 中的数据流式传输到 Cloud。对于 Parquet、JSON 以及其他数十种格式,这种方法同样适用。

接下来请查看以下快速入门:

或者查阅参考文档,进一步了解:

ClickHouse Academy — Master ClickHouse with expert-designed training for every skill level
Check out the ClickHouse academy for on-demand and live training
Navigation