导入数据

MapReduce BMR

  • 发行版本
  • 功能发布记录
  • 产品描述
    • 节点类型说明
    • 产品优势
    • 应用场景
    • 产品功能
    • 产品简介
  • Python-SDK
    • Cluster(集群)
    • BmrClient
    • 异常处理
    • InstanceGroup(实例组)
    • 简介
    • 文档更新记录
    • Step(作业)
    • 版本变更记录
    • Instance(实例)
    • 快速入门
    • 安装SDK工具包
  • 开源组件介绍
    • Impala
    • Pig
    • Druid
    • Presto
    • Hue
    • Ooize
    • HBase
    • Kudu
    • Sqoop
    • Hadoop-Streaming
    • Zeppelin
    • Alluxio
    • Kerberos
      • 集群互信配置
      • 概述
    • ClickHouse
      • 常见问题
      • 数据迁移同步
        • 从Spark导入
        • 从Kafka同步数据
        • 将自建ClickHouse数据迁移到云ClickHouse中
        • 从Flink导入
        • 从MySQL导入和同步
        • 从本地数据导入
          • Parquet格式
          • JSON
          • SQL转储
          • CSV and TSV
      • 快速入门
        • 访问模式
        • 客户端登录
        • 创建ClickHouse集群
        • 基础操作
      • 运维相关操作
        • ClickHouse集群扩容
        • ClickHouse集群缩容
        • 日志配置说明
        • 监控告警配置
    • Ranger
      • ranger概述
      • 权限策略配置
    • Paimon
      • Hive示例
      • StarRocks示例
      • 联合查询示例
      • Flink示例
      • Spark示例
    • Flink
      • 基础使用
    • Trino
      • 基础使用
      • 概述
    • Spark
      • 引擎增强
      • 基础使用
    • Hive
      • 开发指南
        • 自定义函数(UDF)
      • 实践操作
        • Hive迁移
        • Hive操作HBase外表
      • 基础使用
        • Hive基础操作
        • Hive连接方式
  • Java-SDK
    • Cluster(集群)
    • 异常
    • BmrClient
    • InstanceGroup(实例组)
    • 日志
    • 文档更新记录
    • 版本更新记录
    • Step(作业)
    • Instance(实例)
    • 快速入门
    • 安装SDK工具包
    • 概述
  • 快速入门
    • 操作流程概览
    • 环境准备
    • 创建集群
    • 数据准备
    • 开发作业
    • 查看结果
    • ClickHouse
      • 导入数据
      • 创建数据库
      • 连接集群
      • 创建表
  • 操作指南
    • 集群模板
    • 服务管理
    • 集群配置
      • 用户管理
      • 弹性伸缩
      • 创建集群
      • 集群安全模式
      • EIP
      • Hive元数据说明
      • 集群审计
      • 配置已有集群
      • 安全组
    • 管理作业
      • 创建作业
      • 诊断、调优
      • 定时任务
      • 查看作业
    • 访问集群
      • 访问集群服务页面
      • 访问集群-openVPN访问集群
      • 使用OpenVPN提交Hadoop作业
      • SSH连接到集群
    • 实践操作
      • 存储数据至HBase
      • 导入数据
      • 编译Maven项目
      • Sqoop导入导出数据
        • 导出数据
    • 权限管理
      • 多用户访问控制
      • 用户管理
    • 集群管理
      • 节点管理
      • 监控报警
      • 集群指标
      • 资源管理
  • 服务等级协议SLA
    • BMR服务等级协议SLA
  • API参考
    • 通用说明
    • 公共头
    • 数据类型
    • 版本更新记录
    • 服务域名
    • 实例操作接口
    • 实例组操作接口
    • 集群操作接口
    • API简介
    • 错误码
  • 常见问题
    • 安全性问题
    • 计费类问题
    • 常见问题总览
    • 性能类问题
    • 配置类问题
    • 故障类问题
  • 视频专区
    • 操作指南
    • 产品介绍
  • 场景教程
    • 流式应用场景
    • 离线应用场景
    • 使用Hive分析网站日志
    • Sqoop应用文档
    • 定时分析日志数据
    • HIVE
      • 不同集群的 Hive 迁移方案
      • Hive 操作 Hbase 外部表
  • 产品定价
    • 转换计费方式
    • 计费项
    • 到期或欠费说明
    • 包年包月计费
    • 续费说明
    • 变更配置计费说明
    • 计费方式
    • 按需计费
    • 账单和用量查询
    • 退款说明
所有文档
menu
没有找到结果,请重新输入

MapReduce BMR

  • 发行版本
  • 功能发布记录
  • 产品描述
    • 节点类型说明
    • 产品优势
    • 应用场景
    • 产品功能
    • 产品简介
  • Python-SDK
    • Cluster(集群)
    • BmrClient
    • 异常处理
    • InstanceGroup(实例组)
    • 简介
    • 文档更新记录
    • Step(作业)
    • 版本变更记录
    • Instance(实例)
    • 快速入门
    • 安装SDK工具包
  • 开源组件介绍
    • Impala
    • Pig
    • Druid
    • Presto
    • Hue
    • Ooize
    • HBase
    • Kudu
    • Sqoop
    • Hadoop-Streaming
    • Zeppelin
    • Alluxio
    • Kerberos
      • 集群互信配置
      • 概述
    • ClickHouse
      • 常见问题
      • 数据迁移同步
        • 从Spark导入
        • 从Kafka同步数据
        • 将自建ClickHouse数据迁移到云ClickHouse中
        • 从Flink导入
        • 从MySQL导入和同步
        • 从本地数据导入
          • Parquet格式
          • JSON
          • SQL转储
          • CSV and TSV
      • 快速入门
        • 访问模式
        • 客户端登录
        • 创建ClickHouse集群
        • 基础操作
      • 运维相关操作
        • ClickHouse集群扩容
        • ClickHouse集群缩容
        • 日志配置说明
        • 监控告警配置
    • Ranger
      • ranger概述
      • 权限策略配置
    • Paimon
      • Hive示例
      • StarRocks示例
      • 联合查询示例
      • Flink示例
      • Spark示例
    • Flink
      • 基础使用
    • Trino
      • 基础使用
      • 概述
    • Spark
      • 引擎增强
      • 基础使用
    • Hive
      • 开发指南
        • 自定义函数(UDF)
      • 实践操作
        • Hive迁移
        • Hive操作HBase外表
      • 基础使用
        • Hive基础操作
        • Hive连接方式
  • Java-SDK
    • Cluster(集群)
    • 异常
    • BmrClient
    • InstanceGroup(实例组)
    • 日志
    • 文档更新记录
    • 版本更新记录
    • Step(作业)
    • Instance(实例)
    • 快速入门
    • 安装SDK工具包
    • 概述
  • 快速入门
    • 操作流程概览
    • 环境准备
    • 创建集群
    • 数据准备
    • 开发作业
    • 查看结果
    • ClickHouse
      • 导入数据
      • 创建数据库
      • 连接集群
      • 创建表
  • 操作指南
    • 集群模板
    • 服务管理
    • 集群配置
      • 用户管理
      • 弹性伸缩
      • 创建集群
      • 集群安全模式
      • EIP
      • Hive元数据说明
      • 集群审计
      • 配置已有集群
      • 安全组
    • 管理作业
      • 创建作业
      • 诊断、调优
      • 定时任务
      • 查看作业
    • 访问集群
      • 访问集群服务页面
      • 访问集群-openVPN访问集群
      • 使用OpenVPN提交Hadoop作业
      • SSH连接到集群
    • 实践操作
      • 存储数据至HBase
      • 导入数据
      • 编译Maven项目
      • Sqoop导入导出数据
        • 导出数据
    • 权限管理
      • 多用户访问控制
      • 用户管理
    • 集群管理
      • 节点管理
      • 监控报警
      • 集群指标
      • 资源管理
  • 服务等级协议SLA
    • BMR服务等级协议SLA
  • API参考
    • 通用说明
    • 公共头
    • 数据类型
    • 版本更新记录
    • 服务域名
    • 实例操作接口
    • 实例组操作接口
    • 集群操作接口
    • API简介
    • 错误码
  • 常见问题
    • 安全性问题
    • 计费类问题
    • 常见问题总览
    • 性能类问题
    • 配置类问题
    • 故障类问题
  • 视频专区
    • 操作指南
    • 产品介绍
  • 场景教程
    • 流式应用场景
    • 离线应用场景
    • 使用Hive分析网站日志
    • Sqoop应用文档
    • 定时分析日志数据
    • HIVE
      • 不同集群的 Hive 迁移方案
      • Hive 操作 Hbase 外部表
  • 产品定价
    • 转换计费方式
    • 计费项
    • 到期或欠费说明
    • 包年包月计费
    • 续费说明
    • 变更配置计费说明
    • 计费方式
    • 按需计费
    • 账单和用量查询
    • 退款说明
  • 文档中心
  • arrow
  • MapReduceBMR
  • arrow
  • 快速入门
  • arrow
  • ClickHouse
  • arrow
  • 导入数据
本页目录
  • 约束条件
  • 插入SELECT的结果
  • 从文件插入数据
  • 带有 FROM INFILE 的单个文件
  • 使用globs包含FROM INFILE的多个文件
  • 使用表函数插入
  • 性能注意事项
  • 非同步插入数据
  • 大型或长时间运行的插入数据

导入数据

更新时间:2025-08-21

将数据插入表中。句法:

Plain Text
1INSERT INTO [TABLE] [db.]table [(c1, c2, c3)] [SETTINGS ...] VALUES (v11, v12, v13), (v21, v22, v23), ...

您可以使用 指定要插入的列的列表。您还可以使用带有列匹配器的(c1, c2, c3)表达式,例如和/或修饰符,例如APPLY、EXCEPT、REPLACE。*

例如,考虑下表:

Plain Text
1SHOW CREATE insert_select_testtable;
Plain Text
1CREATE TABLE insert_select_testtable
2(
3    `a` Int8,
4    `b` String,
5    `c` Int8
6)
7ENGINE = MergeTree()
8ORDER BY a
Plain Text
1INSERT INTO insert_select_testtable (*) VALUES (1, 'a', 1) ;

如果要在除“b”之外的所有列中插入数据,则需要在括号中传递您选择的列数(即多少个值):

Plain Text
1INSERT INTO insert_select_testtable (* EXCEPT(b)) Values (2, 2);
Plain Text
1SELECT * FROM insert_select_testtable;
Plain Text
1┌─a─┬─b─┬─c─┐
2│ 2 │   │ 2 │
3└───┴───┴───┘
4┌─a─┬─b─┬─c─┐
5│ 1 │ a │ 1 │
6└───┴───┴───┘

在这个例子中,可以看到插入的第二行有a和c列由传递的值填充,并且b默认填充了值。也可以使用DEFAULT关键字插入默认值:

Plain Text
1INSERT INTO insert_select_testtable VALUES (1, DEFAULT, 1) ;

如果列表未包括所有现有列,则其余列将填充:

  • DEFAULT根据表定义中指定的表达式计算的值。
  • DEFAULT如果未定义表达式,则为零和空字符串。

数据可以以ClickHouse支持的任何格式传递给INSERT 。格式必须在查询中明确指定:

Plain Text
1INSERT INTO [db.]table [(c1, c2, c3)] FORMAT format_name data_set

例如,以下查询格式与 INSERT ... VALUES 的基本版本相同:

Plain Text
1INSERT INTO [db.]table [(c1, c2, c3)] FORMAT Values (v11, v12, v13), (v21, v22, v23), ...

ClickHouse 会删除数据前的所有空格和一个换行符(如果有)。在形成查询时,我们建议将数据放在查询运算符后的新行上(如果数据以空格开头,这一点很重要)。例如:

Plain Text
1INSERT INTO t FORMAT TabSeparated
211  Hello, world!
322  Qwerty

您可以使用命令行客户端或HTTP 接口从查询中单独插入数据。

笔记
如果要指定SETTINGS查询INSERT,则必须在子句之前 执行此操作,因为之后的所有内容都被视为数据。例如:FORMAT``FORMAT format_name

约束条件

如果表有约束条件,则将对插入的每一行数据检查其表达式。如果任何约束不满足 — 服务器将引发包含约束名称和表达式的异常,查询将停止。

插入SELECT的结果

句法:

Plain Text
1INSERT INTO [TABLE] [db.]table [(c1, c2, c3)] SELECT ...

列根据其在SELECT子句中的位置进行映射。但是,它们在SELECT表达式和INSERT的表中的名称可能不同。如有必要,将执行类型转换。

除了Values之外,其他数据格式都不允许将值设置为诸如等表达式now()。Values1 + 2格式允许有限地使用表达式,但不建议这样做,因为在这种情况下,执行表达式的代码效率低下。

不支持修改数据部分的其他查询:UPDATE,DELETE,REPLACE,MERGE,UPSERT。INSERT UPDATE但是,您可以使用 删除旧数据ALTER TABLE ... DROP PARTITION。

FORMAT``SELECT如果子句包含表函数input() ,则必须在查询末尾指定子句。

要插入默认值而不是NULL插入不可空数据类型的列,请启用insert_null_as_default设置。

INSERT还支持CTE(common table expression)。例如,下面两个语句是等效的:

Plain Text
1INSERT INTO x WITH y AS (SELECT * FROM numbers(10)) SELECT * FROM y;
2WITH y AS (SELECT * FROM numbers(10)) INSERT INTO x SELECT * FROM y;

从文件插入数据

句法:

Plain Text
1INSERT INTO [TABLE] [db.]table [(c1, c2, c3)] FROM INFILE file_name [COMPRESSION type] [SETTINGS ...] [FORMAT format_name]

使用上述语法从存储在客户端的一个或多个文件中插入数据。file_name和type是字符串文字。必须在子句中设置输入文件格式FORMAT。

支持压缩文件。压缩类型通过文件名的扩展名检测。或者可以在子句中明确指定。支持COMPRESSION的类型有:'none'``'gzip'``'deflate'``'br'``'xz'``'zstd'``'lz4'``'bz2'

此功能在命令行客户端和clickhouse-local中可用。

带有 FROM INFILE 的单个文件

使用命令行客户端执行以下查询:

Plain Text
1echo 1,A > input.csv ; echo 2,B >> input.csv
2clickhouse-client --query="CREATE TABLE table_from_file (id UInt32, text String) ENGINE=MergeTree() ORDER BY id;"
3clickhouse-client --query="INSERT INTO table_from_file FROM INFILE 'input.csv' FORMAT CSV;"
4clickhouse-client --query="SELECT * FROM table_from_file FORMAT PrettyCompact;"

结果:

Plain Text
1┌─id─┬─text─┐
2│  1 │ A    │
3│  2 │ B    │
4└────┴──────┘

使用globs包含FROM INFILE的多个文件

此示例与前一个示例非常相似,但使用从多个文件插入FROM INFILE 'input_*.csv。

Plain Text
1echo 1,A > input_1.csv ; echo 2,B > input_2.csv
2clickhouse-client --query="CREATE TABLE infile_globs (id UInt32, text String) ENGINE=MergeTree() ORDER BY id;"
3clickhouse-client --query="INSERT INTO infile_globs FROM INFILE 'input_*.csv' FORMAT CSV;"
4clickhouse-client --query="SELECT * FROM infile_globs FORMAT PrettyCompact;"

使用表函数插入

可以将数据插入到表函数引用的表中。

句法:

Plain Text
1INSERT INTO [TABLE] FUNCTION table_func ...

例子

远程表函数用于以下查询:

Plain Text
1CREATE TABLE simple_table (id UInt32, text String) ENGINE=MergeTree() ORDER BY id;
2INSERT INTO TABLE FUNCTION remote('localhost', default.simple_table)
3    VALUES (100, 'inserted via remote()');
4SELECT * FROM simple_table;

结果:

Plain Text
1┌──id─┬─text──────────────────┐
2│ 100 │ inserted via remote() │
3└─────┴───────────────────────┘

性能注意事项

INSERT按主键对输入数据进行排序,并按分区键将它们拆分为多个分区。如果一次将数据插入多个分区,则会显著降低查询的性能INSERT。要避免这种情况:

  • 以相当大的批量添加数据,例如一次添加 100,000 行。
  • 在将数据上传到 ClickHouse 之前,按分区键对数据进行分组。

如果出现以下情况,性能不会下降:

  • 数据是实时添加的。
  • 您上传的数据通常按时间排序。

非同步插入数据

可以异步插入少量但频繁的数据。此类插入的数据将组合成批数据,然后安全地插入到表中。要使用异步插入,请启用此async_insert设置。

使用async_insert或Buffer表引擎会导致额外的缓冲。

大型或长时间运行的插入数据

当您插入大量数据时,ClickHouse将通过称为“压缩”的过程来优化写入性能。内存中插入的小块数据在写入磁盘之前会合并并压缩为更大的块。压缩可减少与每次写入操作相关的开销。在此过程中,ClickHouse完成每行写入后即可查询插入的数据max_insert_block_size。

上一篇
查看结果
下一篇
创建数据库