数据的写入

简介: 数据的写入

INSERT 语句支持三种语法范式,三种范式各不相同,可以根据写入的需求灵活运用。


VALUES格式

使用 VALUES 格式的常规语法:

$ INSERT INTO [db.]table [(c1, c2, c3, ...)] VALUES (v11, v12, v13, ...), (v21, v22, v23, ...), ...点击复制复制失败已复制


其中, c1c2c3 是列字段声明,可省略。 VALUES 后紧跟的是由元组组成的待写入数据,通过下标位与列字段声明一一对应。数据支持批量声明写入、多行数据之间使用逗号分割。例如执行下面的语句,将批量写入多条数据:

$ INSERT INTO partition_v2 VALUES 
('A000', 'www.baidu.com', '2022-04-01'), 
('A001', 'www.virtualbing.fun', '2022-05-01'), 
('A002', 'www.virtualbing.fun', '2022-05-02'), 
('A003', 'www.virtualbing.fun', '2022-04-02'), 
('A004', 'www.virtualbing.fun', '2022-04-03'), 
('A005', 'www.virtualbing.fun', '2022-06-03'), 
('A006', 'www.virtualbing.fun', '2022-06-04');点击复制复制失败已复制


在使用 VALUES 格式的语法写入数据时,支持加入表达式函数,例如:

$ INSERT INTO partition_v2 VALUES ('A0014', toString(1+2), now())点击复制复制失败已复制


指定格式

使用指定格式的语法:

$ INSERT INTO [db.]table [(c1, c2, c3, ...)] FORMAT format_name data_set点击复制复制失败已复制


ClickHouse 支持多种数据格式,以常用的 csv 格式写入为例:

$ INSERT INTO partition_v2 FORMAT CSV \
 'A0017', 'www.baidu.com', '2022-07-07' \
 'A0018', 'www.virtualbing.fun', '2022-07-08';点击复制复制失败已复制


SELECT 子句

使用 SELECT 子句形式的语法:

$ INSERT INTO [db.]table [(c1, c2, c3, ...)] SELECT ...点击复制复制失败已复制


通过 SELECT 子句可将查询结果写入数据表,假设需要将 partition_v1 的数据写入 partition_v2 ,则可以使用下面的语句:

$ INSERT INTO partition_v2 SELECT * FROM partition_v1;点击复制复制失败已复制


在通过 SELECT 子句写入数据的时候,同样也支持加入表达式函数,例如:

$ INSERT INTO partition_v2 SELECT 'A0020', 'www.virtualbing.fun', now();点击复制复制失败已复制


总结

虽然 VALUESSELECT 子句的形式都支持声明表达式或函数,但是表达式和函数会带来额外的性能开销,从而导致写入性能的下降。所以如果追求极致的写入性能,就应该尽可能避免使用他们。


ClickHouse 内部所有的数据操作都是面向 Block 数据库的,所以 INSERT 查询最终会将数据转换为 Block 数据块。也正因如此, INSERT 语句在单个数据库的写入过程中是具有原子性的。在默认情况下,每个数据块最多可以写入 1048576 行数据(由 max_insert_block_size 参数控制)。也就是说,如果一条 INSERT 语句写入的数据少于 max_insert_block_size 行,那么这批数据的写入是具有原子性的,即要么全部成功,要么全部失败。需要注意的是,只有在 ClickHouse 服务端处理数据的时候才具有这种原子写入的特性,例如使用 JDBC 或者 HTTP 接口时。因为 max_insert_block_size 参数在用 CLI 命令行或者 INSERT SELECT 子句写入时是不生效的。


提示

记住是 100 多万条即可。

目录
相关文章
|
3月前
|
存储 运维 分布式数据库
1T 数据到底有多大?
本文探讨了1TB数据量的实际意义,通过对比日常业务量和数据库处理能力,揭示了1TB数据的庞大。文中指出,虽然一些机构拥有PB级别的数据,但这更多是存储需求而非计算需求。文章最后强调,优化TB级数据处理效率,如将几小时的处理时间缩短至几分钟,对于大多数应用场景来说更为实际和重要。
|
3月前
|
数据采集
3.1.2 数据说明
本案例基于2022年5月10日采集的某网站前50页手机销售数据,包含手机销售信息和用户售后反馈两部分,旨在分析销售状况、用户需求及体验。通过对这些数据的深入挖掘,项目目标在于理解消费者的购买行为与偏好,并据此调整营销策略,优化售后服务,从而提升电商平台的经济效益。
39 3
|
4月前
|
搜索推荐 大数据 数据处理
数据特点
数据特点
72 8
|
8月前
|
数据安全/隐私保护 C++
C++程序中共用数据的保护
C++程序中共用数据的保护
56 2
|
机器学习/深度学习 算法 数据挖掘
灰太狼的数据世界(四)
灰太狼的数据世界(四)
92 0
|
存储 数据库 索引
灰太狼的数据世界(二)
灰太狼的数据世界(二)
153 0
|
存储 人工智能 缓存
通过数据,你都知道了哪些“原来是这样”的事儿?
在生活中,数据无处不在,有新数据,也有老数据。有1T的数据,也有1P的数据。有文件数据,也有视频数据。通过数据的分析与洞察,我们总能通过数据了解到一些 “原来是这样”的事儿。比如,记账APP会总结自己花费了多少钱,分析钱花在那些地方了。音乐APP会汇总曲库的歌曲自己听了多少次,分析自己喜欢那些类型的音乐。
148 2
|
存储 算法 数据可视化
灰太狼的数据世界(一)
灰太狼的数据世界(一)
160 0
|
SQL 数据采集 JSON
灰太狼的数据世界(三)
灰太狼的数据世界(三)
92 0

相关实验场景

更多