跳到主要内容
跳到主要内容

在 ClickHouse 中插入和导出 SQL 数据

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 服务器的情况下处理本地/远程文件。