数据的写入

简介: 数据的写入

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

目录
相关文章
|
1月前
|
数据采集
3.1.2 数据说明
本案例基于2022年5月10日采集的某网站前50页手机销售数据,包含手机销售信息和用户售后反馈两部分,旨在分析销售状况、用户需求及体验。通过对这些数据的深入挖掘,项目目标在于理解消费者的购买行为与偏好,并据此调整营销策略,优化售后服务,从而提升电商平台的经济效益。
37 3
|
机器学习/深度学习 算法 数据挖掘
灰太狼的数据世界(四)
灰太狼的数据世界(四)
86 0
|
存储 数据库 索引
灰太狼的数据世界(二)
灰太狼的数据世界(二)
142 0
|
存储 算法 数据可视化
灰太狼的数据世界(一)
灰太狼的数据世界(一)
154 0
|
SQL 数据可视化 数据挖掘
人人都会点数据分析 | 了解数据
人人都会点数据分析 | 了解数据
105 0
|
人工智能 算法 新能源
数据上新啦!
风机检测算法与风机分布数据集上线
数据上新啦!
|
缓存 Java 数据库
对于某些不会变又经常需要用的数据的处理
本文主要讲对于某些不会变又经常需要用的数据的处理
124 0
|
安全 大数据 数据安全/隐私保护
数据“出阁”
《关于北京市金融公共数据专区建设的意见》是北京市颁布的数据专区建设的指导意见,究竟如何理解?公共数据专区有哪些数据?运营单位如何参与,本文将为您解读。
337 0
|
机器学习/深度学习 数据采集 存储
你已经准备好了,你的数据准备好了么?
  数据准备常常被认为是企业内部利用数据的主要障碍。找到正确的工具则可以帮助企业实现突破。   要想获得数据分析的好处,首先必须正确地准备数据。据市场研究机构Gartner的最新研究显示,对于许多企业来说,这是一个很大的瓶颈,其70%的时间都花在了数据准备工作上了。   作为《数据准备工具市场指南》的主要作者,Gartner的数据和分析团队高级分析师Ehtisham Zaidi指出,“通过适当的人员及时地查找、访问、清理、转换和共享数据仍然是数据管理和分析中最耗时的障碍之一。”   日立Vantara的首席营销官Jonathan Martin认为,对于希望通过分析来转变业务的公司而言,主
175 0

相关实验场景

更多