当前位置: 首页 > news >正文

python如何将一个dataframe快速写入clickhouse

目录

  • 前言
  • 思路与核心代码
  • 优缺点分析

前言

dataframe是用python做数据分析最场景的数据结构了,如何将dataframe数据快速写入到clickhouse数据库呢?这里介绍几种方法,各有优劣势,可以结合自己的使用场景挑用。

思路与核心代码

假设df是一个dataframe数据结构,一共有5个列。

  • to_records一条一条插入
df = pd.Dataframe()for x in df.to_records(index = False): sql = "INSERT INTO database.table_name(col1,col2,col3,col4,col5)VALUES"+str(tuple(x))# print(sql)client.execute(sql)

这种方法将dataframe里面每一个看车一个record记录,一条记录一条记录插入clickhouse数据表,不容易出岔子,但是一旦数据量很大,就会要很长时间;

  • 整个dataframe插入
df = pd.Dataframe()insert_query = 'INSERT INTO  database.table_name(col1,col2,col3,col4,col5)VALUES'  
values_query = ','.join([tuple(df.iloc[i]) for i in range(len(df))])  
insert_query += f' ({",".join([f"({col}, {val})" for col, val in zip(df.columns, values_query)])})'  
cursor = conn.cursor()  
cursor.execute(insert_query)

这种方法先利用values_query变量将每一行的数据转换为字符串形式,然后,使用INSERT语句将通过将整个DataFrame一次性插入ClickHouse中,避免了频繁的网络通信,从而提高了性能。但是需要注意的是,这种方法只适用于小型数据集。其实,也可以仿MySQL那样用to_sql的方法一次性塞入表里面

df = pd.Dataframe()df.to_sql('database.table_name', conn, if_exists='append', index=False) 
  • parallel插入
insert_query = 'INSERT INTO my_table (name, age, salary) VALUES'  
values_query = ','.join([tuple(df.iloc[i]) for i in range(len(df))])  
insert_query += f' ({",".join([f"({col}, {val})" for col, val in zip(df.columns, values_query)])})'  
cursor = conn.cursor()  
cursor.execute(insert_query, parameters=None, execution_profile='parallel')

对于超大型数据集,建议使用ClickHouse的并行插入功能或其他分布式技术。

优缺点分析

1,如果提前构造好了dataframe,且dataframe数据量适中,那么可以考虑一次性塞入,如果dataframe数据量足够大超出了内存容量,那么就要考虑了;
2,对于哪些容易丢失的还是一条一条插入数据库为好;

相关文章:

python如何将一个dataframe快速写入clickhouse

目录 前言思路与核心代码优缺点分析 前言 dataframe是用python做数据分析最场景的数据结构了,如何将dataframe数据快速写入到clickhouse数据库呢?这里介绍几种方法,各有优劣势,可以结合自己的使用场景挑用。 思路与核心代码 假…...

Tiny Player Mac:小而美,音乐播放的极致体验

对于追求音质和操作简便的Mac用户来说,Tiny Player Mac是一款不可多得的音乐播放器。它以简洁的界面、强大的功能和优异的性能,吸引了无数用户的目光。接下来,让我们一起了解这款小而美的音乐播放器。 Tiny Player Mac支持多种音频格式&#…...

2022年12月 C/C++(五级)真题解析#中国电子学会#全国青少年软件编程等级考试

C/C++编程(1~8级)全部真题・点这里 第1题:漫漫回国路 2020年5月,国际航班机票难求。一位在美国华盛顿的中国留学生,因为一些原因必须在本周内回到北京。现在已知各个机场之间的航班情况,求问他回不回得来(不考虑转机次数和机票价格)。 时间限制:1000 内存限制:65536 …...

C语言学习:7、break与continue的用法

前面讲到的循环体,貌似能解决生活中的很多问题,毕竟生活中很多事情是在重复的。但有时候也会有些小插曲,比如你在日复一日的上班,但某一天又特殊的事情你失业了,不就没班上了吗,那就得跳出那个上班的循环了…...

Ubuntu中安装clion并把clion添加到桌面快捷方式

Clion的安装: CLion是由大名鼎鼎的JetBrains公司出品的一款面向C和C的集成开发工具。下载地址。 下载后解压出来,然后进入到解压后的文件夹里面,执行 ./clion.sh 便可以运行软件: cd bin/ ./clion.sh 激活使用的话&…...

如何利用python来提取SQL语句中的表名称

1.介绍 在某些场景下,我们可能需要从一个复杂的SQL语句中提取对应的表名称,在这样的场景下,我们如果在python中处理的话,就需要用到SQLparse这个库。 SQLparse 是一个用于解析 SQL 查询语句的 Python 库。它可以将复杂的 SQL 查询…...

linux通用时钟框架(CCF)

目录 前言CCF 介绍提供者和消费者的概念CCF 框架组成关系CCF 程序关键结构体 CCF 重要组成注册时钟未使用设备树的时钟注册操作使用设备树的时钟注册操作 从使用的角度看CCF 前言 linux 内核版本 v4.19 嵌入式平台rv1109 , 文中代码出处。 CCF 介绍 提供者和消费者的概念 C…...

基于AERMOD模型在大气环境影响评价中的实践技术应用

随着我国经济快速发展,我国面临着日益严重的大气污染问题。近年来,严重的大气污染问题已经明显影响国计民生,引起政府、学界和人们越来越多的关注。大气污染是工农业生产、生活、交通、城市化等方面人为活动的综合结果,同时气象因…...

企业内训课程、在线教育平台付费课程加密防下载的10种方式

企业内训课程、在线教育平台付费课程加密防下载的10种方式: 实例演示:课程视频-第1课状语从句,VRM演示应用 企业内训课程、在线教育平台付费课程,他们的这种视频课程的加密是如何做的?整理了10种思路,供大家参考&…...

公关世界杂志公关世界杂志社公关世界编辑部2023年第14期目录

封面印象 画里有大美 笔下有乾坤——品读吴建潮的绘画艺术和诗文创作 赵铁信; 4-9 专题报道 “安济欣看千年济,李春赢得万口春”——赵州桥诗词楹联文化鉴赏暨沈鹏书法艺术研讨会举行 刘占行; 10-14 中国书协第二三届理事、河北省书协原副主席兼秘书长、…...

Linux常用(实用)命令大全

pwd 显示当前工作路径 shutdown 关闭系统 /halt 关闭系统 shutdown -r now 重启 /reboot 重启 systemctl stop firewalld 关闭防火墙 ip addr 查看ip地址. 1、cd命令:用于切换当前目录(可以是绝对路径,也可以是相对路径)如&#x…...

2023-09-07力扣每日一题

链接: [2594. 修车的最少时间](https://leetcode.cn/problems/form-smallest-number-from-two-digit-arrays/) 题意: 一个能力R的人R*N*N分钟修N辆车,求最快多久修完(多人多车) 解: 二分很好想&#x…...

从C语言到C++_39(C++笔试面试题)next_permutation刷力扣

这篇就一直更新一些C的选择题和编程题了。 目录 笔试题1 答案及解析1 笔试题2 答案及解析2 力扣编程题 88. 合并两个有序数组 解析代码 349. 两个数组的交集 解析代码 60. 排列序列 解析代码 46. 全排列 解析代码 本篇完。 笔试题1 1. 以下哪种STL容器中的对象…...

适用于Linux的Windows子系统(系统安装步骤)

目录 前言 一、WSL2安装 1.Microsoft参考文档(推荐选择旧版 WSL 的手动安装步骤) 2.开启子系统 二、Ubuntu安装 1.在Microsoft Store中获取ubuntu 2.运行ubuntu配置管理信息 3.ubuntu换源 三、WSL 与 Ubuntu的一些基础使用命令 四、Windows Terminal终端…...

HarmonyOS/OpenHarmony(Stage模型)应用开发组合手势(二)并行识别

并行识别组合手势对应的GestureMode为Parallel。并行识别组合手势中注册的手势将同时进行识别,直到所有手势识别结束。并行识别手势组合中的手势进行识别时互不影响。 以在一个Column组件上绑定点击手势和双击手势组成的并行识别手势为例,由于单击手势和…...

如何使用GPT引领前沿与应用突破之GPT4科研实践技术与AI绘图

GPT对于每个科研人员已经成为不可或缺的辅助工具,不同的研究领域和项目具有不同的需求。例如在科研编程、绘图领域: 1、编程建议和示例代码: 无论你使用的编程语言是Python、R、MATLAB还是其他语言,都可以为你提供相关的代码示例。 2、数据可…...

Blender中的高级边缘控制和纹理映射

推荐:使用 NSDT场景编辑器 快速搭建3D应用场景 步骤 1 首先,您需要创建一组无阴影材质,每种材质具有不同的颜色,确保您有足够的材质来覆盖模型,而不会有相同的颜色相互重叠。然后,切换到“着色”&#xff…...

从0开始学go第四天

模板继承 继承根模板,重新定义“块模板” 【Go Web开发系列教程】07-Go模板继承_哔哩哔哩_bilibili 解析模板时,base模板要在前 渲染模板时: 要用ExecuteTemplate,而不是Excute 模板补充:Go语言标准库之http/templ…...

【飞书ChatGPT机器人】飞书接入ChatGPT,打造智能问答助手

文章目录 前言环境列表1.飞书设置2.克隆feishu-chatgpt项目3.配置config.yaml文件4.运行feishu-chatgpt项目5.安装cpolar内网穿透6.固定公网地址7.机器人权限配置8.创建版本9.创建测试企业10. 机器人测试 前言 在飞书中创建chatGPT机器人并且对话,在下面操作步骤中…...

vue3集成jsoneditor

一、背景 之前在做录制回放平台的时候,需要前端展示子调用信息,子调用是一个请求列表数组结构,jsoneditor对数组的默认展示结构是[0].[1].[2]..的方式,为了达到如下的效果,必须用到 onNodeName的钩子函数,…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...

深入理解Optional:处理空指针异常

1. 使用Optional处理可能为空的集合 在Java开发中,集合判空是一个常见但容易出错的场景。传统方式虽然可行,但存在一些潜在问题: // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...

密码学基础——SM4算法

博客主页:christine-rr-CSDN博客 ​​​​专栏主页:密码学 📌 【今日更新】📌 对称密码算法——SM4 目录 一、国密SM系列算法概述 二、SM4算法 2.1算法背景 2.2算法特点 2.3 基本部件 2.3.1 S盒 2.3.2 非线性变换 ​编辑…...

从实验室到产业:IndexTTS 在六大核心场景的落地实践

一、内容创作:重构数字内容生产范式 在短视频创作领域,IndexTTS 的语音克隆技术彻底改变了配音流程。B 站 UP 主通过 5 秒参考音频即可克隆出郭老师音色,生成的 “各位吴彦祖们大家好” 语音相似度达 97%,单条视频播放量突破百万…...

6.计算机网络核心知识点精要手册

计算机网络核心知识点精要手册 1.协议基础篇 网络协议三要素 语法:数据与控制信息的结构或格式,如同语言中的语法规则语义:控制信息的具体含义和响应方式,规定通信双方"说什么"同步:事件执行的顺序与时序…...

使用python进行图像处理—图像变换(6)

图像变换是指改变图像的几何形状或空间位置的操作。常见的几何变换包括平移、旋转、缩放、剪切(shear)以及更复杂的仿射变换和透视变换。这些变换在图像配准、图像校正、创建特效等场景中非常有用。 6.1仿射变换(Affine Transformation) 仿射变换是一种…...