数据的写入

简介: 数据的写入

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 多万条即可。

目录
相关文章
|
8月前
|
存储 算法 数据可视化
灰太狼的数据世界(一)
灰太狼的数据世界(一)
110 0
|
8月前
|
SQL 数据采集 JSON
灰太狼的数据世界(三)
灰太狼的数据世界(三)
46 0
|
8月前
|
Linux
6.3.3 数据撷取
6.3.3 数据撷取
46 0
|
8月前
|
SQL 数据可视化 数据挖掘
人人都会点数据分析 | 了解数据
人人都会点数据分析 | 了解数据
|
8月前
|
Java
数据的比较
数据的比较
|
9月前
|
存储 索引
|
人工智能 算法 新能源
数据上新啦!
风机检测算法与风机分布数据集上线
数据上新啦!
|
缓存 Java 数据库
对于某些不会变又经常需要用的数据的处理
本文主要讲对于某些不会变又经常需要用的数据的处理
|
安全 大数据 数据安全/隐私保护
数据“出阁”
《关于北京市金融公共数据专区建设的意见》是北京市颁布的数据专区建设的指导意见,究竟如何理解?公共数据专区有哪些数据?运营单位如何参与,本文将为您解读。
309 0