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

python:大文件分批/块导入数据库方式记录

一、问题背景

对于数据文件比较大的数据,一次性串联sql进行入库,往往会受到数据库本身对sql长度的限制,从而需要分块或者分批次,将大数据文件一点一点的进行入库。特针对这种入库方式,进行一个简单记录,各类数据库入库后续均可参考下述实现分块的方式,进行分批入库数据。

二、实现记录

问题点其实主要是如何对数据进行分块。pyhton的read_csv函数和read_excel等数据读取函数都含有分批读取数据的参数:chunksize,从而实现分批入库。

如果是已经全部读取了数据,还想再进一步分批,则可以参考下述代码进行分批读取:

batch_size = 2000
total_rows = p_result_notice_mes_df.shape[0]    
total_batches = total_rows // batch_size + (1 if total_rows % batch_size > 0 else 0)
for i in range(total_batches):start_index = i * batch_sizeend_index = min((i + 1) * batch_size, total_rows)batch_df = p_result_notice_mes_df.iloc[start_index:end_index]

部分示例程序如下:

third_tbname ='bods.scw_info'# 计算数据总数和批次数batch_size = 2000total_rows = p_result_notice_mes_df.shape[0]    total_batches = total_rows // batch_size + (1 if total_rows % batch_size > 0 else 0)if p_third_flag:for i in range(total_batches):start_index = i * batch_sizeend_index = min((i + 1) * batch_size, total_rows)batch_df = p_result_notice_mes_df.iloc[start_index:end_index]third_values_list = []cursor.execute(f"truncate table {third_tbname} ")# 构建批量插入的SQL语句        insert_query = f"""INSERT into {third_tbname} (changelog_id, notice_model, notice_batch,brand, vehicle_type, rated_quality, total_quality, curb_weight, fuel_type, emission_standard)        VALUES """for index, row in batch_df.iterrows():third_values_list.append(f"""('{row["变记录"]}' , '{row["告"]}', '{row["公次"]}', '{row["品牌"]}', '{row["类型"]}', '{row["额量"]}', '{row["总"]}','{row["整量"]}', '{row["燃类"]}', '{row["排放准"]}')""")insert_query += ',\n'.join(third_values_list)# 执行批量插入cursor.execute(insert_query) print('公告url信息更新入库成功!\n')  else:print('公告链接信息无需更新') 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 富格林:可信方法防备暗箱操作
  • 与神对话-1
  • 面试中算法(A星寻路算法)
  • tomcat--安全配置多虚拟机
  • 2024年,游戏行业还值得进入吗?
  • 在ARM开发板上,栈大小设置为2MB(常用设置)里面存放的数据
  • 盲人社区生活支持体系:织就一张温暖的网
  • 蓝桥杯嵌入式国赛笔记(2):拓展板按键程序设计
  • pwa动态修改manifest.json(start_url)
  • PHP发票真假API、医疗电子票据查验、发票识别接口开发示例
  • 元组推导式
  • Keras深度学习框架第二十九讲:在自定义训练循环中应用KerasTuner超参数优化
  • qt 布局学习笔记
  • 气膜体育馆主要能耗解析—轻空间
  • 2024,java开发,已经炸了吗?
  • .pyc 想到的一些问题
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • exif信息对照
  • JavaScript新鲜事·第5期
  • js写一个简单的选项卡
  • js正则,这点儿就够用了
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • mysql中InnoDB引擎中页的概念
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • Vue 2.3、2.4 知识点小结
  • 阿里云购买磁盘后挂载
  • 初识MongoDB分片
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 分享几个不错的工具
  • 构造函数(constructor)与原型链(prototype)关系
  • 面试总结JavaScript篇
  • 模型微调
  • 前端面试题总结
  • 使用 @font-face
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 我的业余项目总结
  • 《天龙八部3D》Unity技术方案揭秘
  • gunicorn工作原理
  • 阿里云API、SDK和CLI应用实践方案
  • 说说我为什么看好Spring Cloud Alibaba
  • ​ArcGIS Pro 如何批量删除字段
  • ​一些不规范的GTID使用场景
  • # 详解 JS 中的事件循环、宏/微任务、Primise对象、定时器函数,以及其在工作中的应用和注意事项
  • #HarmonyOS:基础语法
  • #NOIP 2014# day.1 T2 联合权值
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • (07)Hive——窗口函数详解
  • (4)事件处理——(7)简单事件(Simple events)
  • (MTK)java文件添加简单接口并配置相应的SELinux avc 权限笔记2
  • (Note)C++中的继承方式
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (六)激光线扫描-三维重建
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目