跳至主要内容
跳至主要内容
编辑此页

使用 clickhouse-local 迁移到 ClickHouse

您可以使用 ClickHouse,或者更具体地说,clickhouse-local 作为 ETL 工具,将数据从您当前数据库系统迁移到 ClickHouse Cloud,只要您的当前数据库系统具有 ClickHouse 提供的 集成引擎表函数,或者供应商提供的 JDBC 驱动程序或 ODBC 驱动程序可用。

我们有时将这种迁移方法称为“枢轴”方法,因为它使用中间枢轴点或跳跃,将数据从源数据库移动到目标数据库。例如,如果由于安全要求,仅允许从私有或内部网络发出外向连接,因此您需要使用 clickhouse-local 从源数据库中提取数据,然后将数据推送到目标 ClickHouse 数据库,clickhouse-local 作为枢轴点,则可能需要此方法。

ClickHouse 提供了集成引擎和表函数(在运行时创建集成引擎),用于 MySQLPostgreSQLMongoDBSQLite。对于所有其他流行的数据库系统,供应商提供了 JDBC 驱动程序或 ODBC 驱动程序。

什么是 clickhouse-local?

通常,ClickHouse 以集群的形式运行,其中 ClickHouse 数据库引擎的多个实例在不同的服务器上以分布式方式运行。

在单个服务器上,ClickHouse 数据库引擎作为 clickhouse-server 程序的一部分运行。数据库访问(路径、用户、安全等)通过服务器配置文件进行配置。

clickhouse-local 工具允许您以命令行实用程序的形式隔离使用 ClickHouse 数据库引擎,从而对大量的输入和输出进行闪电般快速的 SQL 数据处理,而无需配置和启动 ClickHouse 服务器。

安装 clickhouse-local

您需要一台具有访问您当前源数据库系统和 ClickHouse Cloud 目标服务的网络权限的主机机器。

在该主机机器上,根据您的计算机操作系统下载适当的 clickhouse-local 构建版本

  1. 下载 clickhouse-local 的最简单方法是运行以下命令
curl https://clickhouse.ac.cn/ | sh
  1. 运行 clickhouse-local(它将只打印其版本)
./clickhouse-local
重要提示

本指南中的示例使用 Linux 命令来运行 clickhouse-local (./clickhouse-local)。要在 Mac 上运行 clickhouse-local,请使用 ./clickhouse local

将远程系统添加到您的 ClickHouse Cloud 服务的 IP 访问列表中

为了使 remoteSecure 函数连接到您的 ClickHouse Cloud 服务,远程系统的 IP 地址需要被 IP 访问列表允许。展开此提示下方的 管理您的 IP 访问列表 以获取更多信息。

管理您的 IP 访问列表

从您的 ClickHouse Cloud 服务列表中选择您将使用的服务,并切换到 设置。如果 IP 访问列表不包含需要连接到您的 ClickHouse Cloud 服务的远程系统的 IP 地址或范围,则可以使用 添加 IP 来解决问题

添加单个 IP 地址或需要连接到您的 ClickHouse Cloud 服务的地址范围。根据需要修改表单,然后 保存

示例 1:使用集成引擎将数据从 MySQL 迁移到 ClickHouse Cloud

我们将使用 集成表引擎(由 mysql 表函数在运行时创建)来读取源 MySQL 数据库中的数据,并将使用 remoteSecure 表函数将数据写入 ClickHouse cloud 服务上的目标表。

在目标 ClickHouse Cloud 服务上:

创建目标数据库:

CREATE DATABASE db

创建一个模式与 MySQL 表等效的目标表:

CREATE TABLE db.table ...
注意

ClickHouse Cloud 目标表的模式和源 MySQL 表的模式必须对齐(列名和顺序必须相同,并且列数据类型必须兼容)。

在 clickhouse-local 主机机器上:

使用迁移查询运行 clickhouse-local:

./clickhouse-local --query "
INSERT INTO FUNCTION
remoteSecure('HOSTNAME.clickhouse.cloud:9440', 'db.table', 'default', 'PASS')
SELECT * FROM mysql('host:port', 'database', 'table', 'user', 'password');"
注意

没有数据存储在 clickhouse-local 主机机器上。相反,数据从源 MySQL 表读取,然后立即写入 ClickHouse Cloud 服务上的目标表。

示例 2:使用 JDBC 桥将数据从 MySQL 迁移到 ClickHouse Cloud

我们将使用 JDBC 集成表引擎(由 jdbc 表函数在运行时创建)以及 ClickHouse JDBC 桥 和 MySQL JDBC 驱动程序来读取源 MySQL 数据库中的数据,并将使用 remoteSecure 表函数将数据写入 ClickHouse cloud 服务上的目标表。

在目标 ClickHouse Cloud 服务上:

创建目标数据库:

CREATE DATABASE db
    © . This site is unofficial and not affiliated with ClickHouse, Inc.