跳转到主要内容
ClickHouse 可通过多种方式轻松集成到 OLTP 数据库基础设施中。其中一种方式是使用 SQL 转储在其他数据库与 ClickHouse 之间传输数据。

创建 SQL 转储

可以使用 SQLInsert 以 SQL 格式转储数据。ClickHouse 会按 INSERT INTO <table name> VALUES(... 的形式写入数据,并使用 output_format_sql_insert_table_name 设置项中的值作为表名:
可通过禁用 output_format_sql_insert_include_column_names 选项来省略列名:
现在我们可以将 dump.sql 文件导入另一个 OLTP 数据库:
我们假设 some_table 表存在于 some_db MySQL 数据库中。 某些 DBMS 可能会限制单个批次中可处理的值数量。默认情况下,ClickHouse 会创建包含 65k 个值的批次,但可以通过 output_format_sql_insert_max_batch_size 选项进行调整:

导出一组值

ClickHouse 提供 Values 格式,它与 SQLInsert 类似,但省略了 INSERT INTO table VALUES 这一部分,仅返回一组值:

从 SQL 转储导入数据

要读取 SQL 转储,请使用 MySQLDump
默认情况下,ClickHouse 会跳过未知列 (由 input_format_skip_unknown_fields 选项控制) ,并处理转储文件中找到的第一张表的数据 (如果单个文件中包含多个表的转储) 。DDL 语句会被跳过。要将 MySQL 转储中的数据加载到表中 (mysql.sql 文件) :
我们还可以根据 MySQL 转储文件自动创建表:
这里我们根据 ClickHouse 自动推断出的结构创建了一个名为 table_from_mysql 的表。ClickHouse 要么根据数据识别类型,要么在可用时使用 DDL:

其他格式

ClickHouse 支持多种格式,包括文本格式和二进制格式,以适配各种场景和平台。你可以在以下文章中进一步了解更多格式及其使用方式: 你还可以查看 clickhouse-local——这是一个便携且功能齐全的工具,可用于处理本地/远程文件,而无需 ClickHouse 服务器。
最后修改于 2026年7月1日