如何利用大模型LLM辅助,使用Python完成将CSV快速导入MySQL数据库

目录

一、适合场景

二、开发过程说明

三、功能使用流程

四、代码

1、安装python依赖库

2、完整代码段


一、适合场景

无废话,CSV中有少量不合规数据需要手工处理可利用此方法,适合有点经验的程序员,可以不熟Python,思路还是要有一点

二、开发过程说明

本人不熟Python,chatGPT由于网络问题总是不太好用,利用了文心一言,辅助实现了相关代码

三、功能使用流程

看“main()”函数,

1、修改Mysql数据链接

2、定义好导入的文件和表对,文件都要在变量path目录下,格局需要修改,也可path放空,在map对里面直接写完整的文件名

3、导入

导入的过程:错误的行通过“异常”抓去出来,保存到-error.csv结尾的文件中,以便后续继续处理,原来导入的文件只留下正确的可导入的数据

四、代码

1、安装python依赖库


# 先要运行这个安装依赖的包
pip install pandas sqlalchemy pymysql cryptography

2、完整代码段

# 调整修复 2024-03-29 17:19# 先要运行这个安装依赖的包
# pip install pandas sqlalchemy pymysql cryptographyimport pandas as pd
import re
from sqlalchemy import create_engine  
import csv
import osdef delete_line_from_file_and_backup(file_path, line_number, output_file):  with open(file_path, 'r') as file:  lines = file.readlines()  if not os.path.isfile(output_file):isNewFile = Trueelse:isNewFile = False# 先备份记录with open(output_file, mode='a', newline='') as file:if isNewFile:file.writelines(lines[0])print('=========================')print(lines[0])file.seek(os.SEEK_END)file.writelines(lines[line_number])# 删除指定行数的行(注意Python的索引是从0开始的)  del lines[line_number]# 将修改后的内容写回文件,可以选择写入新文件或覆盖原文件  with open(file_path, 'w') as file:  file.writelines(lines) #取得导入出错的CSV文件的行号
def getErrorLineNo(s):# 使用正则表达式查找行号  line_number_match = re.search(r'in line (\d+)', s)  # 如果找到了匹配项,提取数字  if line_number_match:  line_number = int(line_number_match.group(1))  #print(line_number)  # 输出: 13092  return line_numberelse:  # 使用正则表达式查找行号  line_number_match = re.search(r'at row (\d+)', s)  # 如果找到了匹配项,提取数字  if line_number_match:  line_number = int(line_number_match.group(1))  #print(line_number)  # 输出: 13092  return line_numberelse:  #print("未找到行号")return 0
# 完成导入    
def doImport(engine, path, file_to_table_map):# 循环遍历字典,读取CSV文件并将数据导入到对应的MySQL表中  for csv_file, table_name in file_to_table_map.items():# 循环将所有的导入异常全部抓去出来,保存到外面的CSV文件中# 将剩余的导入到数据库中,有问题的CSV文件,需要手工处理后再导入while True:try:# 使用函数导入CSV文件  print('正在导入数据到表:', table_name, " <--- ", path + csv_file)df = pd.read_csv(path + csv_file, sep='\t')  df.to_sql(table_name, engine, if_exists='replace', index=False)print('导入完成:', table_name)break;except Exception as e:print('导入失败:', table_name, e)row_to_delete = getErrorLineNo(str(e))if row_to_delete >= 0:srcFile = path + csv_filebakFile = srcFile + '-error.csv'print('备份&删除&回写:', table_name, path + bakFile)delete_line_from_file_and_backup(srcFile, row_to_delete, bakFile)else:breakdef main():# 创建数据库连接引擎  engine = create_engine('mysql+pymysql://root:123456@localhost:3306/hjyb',)  # 格式:'文件名': '表名'file_to_table_map = {# 'tb_a.csv': 'tb_a',# 'tb_b.csv': 'tb_b',# 'tb_c.csv': 'tb_c',# 'tb_d.csv': 'tb_d'}# 测试数据目录path = '/Users/zhengjie/working/xx系统/测试数据/'doImport(engine, path, file_to_table_map)if __name__ == '__main__':main()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/780324.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第三十七章 管理和监控Web网关 - Web 网关缓存表

文章目录 第三十七章 管理和监控Web网关 - Web 网关缓存表Web 网关缓存表手动关闭连接清除缓存测试服务器连接 第三十七章 管理和监控Web网关 - Web 网关缓存表 Web 网关缓存表 第四个状态表列出了 Web Gateway 响应缓存中保存的表单。 Cached Forms - 缓存表单的名称&#x…

图像旋转算法双线性插值法详解

双线性插值法是一种常用的插值算法&#xff0c;用于在图像旋转、缩放等操作中估计目标像素的灰度值。它基于近邻像素之间的灰度变化趋势进行推断&#xff0c;从而提供更平滑和精确的结果。 双线性插值算法的基本思想如下&#xff1a; 首先&#xff0c;根据旋转角度确定旋转中心…

vue2完结

笔记 关于不同版本的Vue: 1.vue.js与vue.runtime.xxx.js的区别&#xff1a;&#xff08;1&#xff09;vue.js是完整版的Vue,包含&#xff1a;核心功能模板解析器&#xff08;2&#xff09;vue.runtime.xxx.js是运行版本的Vue,只包含核心功能&#xff0c;没有模板解析器 2.因为…

docker快速安装单节点和多点MongoDB副本集

文章目录 概要一、单节点副本集二、多节点副本集三、参考 概要 最近项目的MongoDB版本终于升级到了MongoDB4.4了&#xff0c;可以使用使用事务了&#xff0c;但MongoDB的不支持单节点事务&#xff0c;至少是副本集。 测试环境没必要搭建复杂的副本集&#xff0c;还好官方给出了…

【动手学深度学习-pytorch】-9.3深度循环神经网络

到目前为止&#xff0c;我们只讨论了具有一个单向隐藏层的循环神经网络。 其中&#xff0c;隐变量和观测值与具体的函数形式的交互方式是相当随意的。 只要交互类型建模具有足够的灵活性&#xff0c;这就不是一个大问题。 然而&#xff0c;对一个单层来说&#xff0c;这可能具有…

量化交易入门(二十七)回撤、收益率、夏普比率

回撤 一、回撤的定义与计算 回撤是指投资组合或交易账户从历史最高点下跌到后来最低点的幅度,通常用百分比表示。计算公式为: 回撤 (历史最高净值 - 当前净值) / 历史最高净值 100% 例如,某策略历史最高净值为150万,当前净值跌到了100万,则回撤为:(150-100)/150100%33.33%…

synchronized 和 ReentrantLock 的区别是什么

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:synchronized 和 ReentrantLock 的区别是什么 1. 获取锁的方式 synchronized:synchronized的锁获取是隐式的。当线程进入synchronized修饰的代码…

探索SOCKS5代理、代理IP与跨界电商、游戏技术的网络安全实践

介绍数字时代跨境业务的兴起&#xff0c;特别是跨界电商和全球游戏市场的扩张。 简述网络安全在支持跨境业务扩展中的核心作用&#xff0c;特别是SOCKS5代理和代理IP技术的重要性。 第一章&#xff1a;出海业务概述 跨界电商与全球化挑战&#xff1a;介绍跨界电商的基本模式&am…

Oracle 19C RAC集群补丁升级

文章目录 一、补丁包概述二、OPatch检查和更新Grid用户更新OPatchOracle用户更新OPatch 三、验证Oracle Inventory的有效性四、运行 OPatch 冲突检查五、运行opatch命令检查GI HOME下是否有足够的空间六、补丁冲突检测与解决&#xff08;修补程序&#xff09;七、使用root用户应…

Linux - 第三节

改变用户类型 su 仅单纯的进行身份变化 依旧处于普通用户里面 su - 进行重新登录更改身份 退出用exit / ctrld su 用户名 改成成其他身份 对一条命令进行提权 sudo command r:可读 w:可写 x:可执行 -:对应的权限位置&#xff0c;没有权限 去掉所有权限 chmod u…

MongoDB聚合运算符:$linearFill

文章目录 MongoDB聚合运算符&#xff1a;$linearFill语法使用对比$fill和$linearFill 举例使用线性插值填充缺失值在单个阶段中使用多种填充方法 MongoDB聚合运算符&#xff1a;$linearFill $linearFill聚合运算符在一个窗口中基于附近字段的值使用线性插值填充null和缺失字段…

Kafka开机自启脚本

1.虚拟机编辑定时任务 crontab -e reboot /usr/local/startShell.sh 2.编辑自定义启动脚本 #!/bin/sh# 进入kafka安装目录 cd /usr/local/kafka_2.12-3.7.0# 初始化java变量 export JAVA_HOME/usr/local/jdk1.8.0_401 export JRE_HOME${JAVA_HOME}/jre export PATH$PATH:${J…

多视图三维重建-SFM简介

背景 掌握传统的多视图三维重建基本流程 总体流程 多视图三维重建的Pipieline如下图&#xff0c;总共分为四个步骤&#xff1a; 拍摄场景多视角的图像建立这些图像之间的联系&#xff08;Data Association&#xff09;SFM稀疏重建MVS稠密重建 Data Association 建立图像…

向开发板上移植ip工具:将ip工具移植到开发板系统中

一. 简介 前面一篇文章对 ip工具源码进行了交叉编译&#xff0c;生成了ip工具。文章如下&#xff1a; 向开发板上移植ip工具&#xff1a;交叉编译 ip工具-CSDN博客 本文对生成的 ip工具进行移植&#xff0c;即移植到开发板系统中&#xff0c;并确定是否可用。 二. 向开发板…

Nagios工具

一 nagios 相关概念 Nagios 是一款开源的免费网络监视工具&#xff0c;能有效监控 Windows、Linux 和 Unix 的主机状态&#xff0c;交换机路由器等网络设置&#xff0c;打印机等。在系统或服务状态异常时发出邮件或短信报警第 一时间通知网站运维人员&#xff0c;在状态恢复后…

CY2300相位对齐时钟乘法器

这份文件是关于Cypress Semiconductor Corporation生产的CY2300型号的Phase-Aligned Clock Multiplier&#xff08;相位对齐时钟乘法器&#xff09;的技术手册。以下是该文件的核心内容概述&#xff1a; 产品特性&#xff1a; 4倍频输出配置。单一锁相环&#xff08;PLL&#x…

顶顶通呼叫中心中间件-声音编码自适应配置方法(mod_cti基于FreeSWITCH)

顶顶通呼叫中心中间件-声音编码自适应配置方法讲解(mod_cti基于FreeSWITCH) 声音编码自适应介绍 声音编码自适应&#xff0c;通常在语音通信和音频处理领域中指的是一种能够根据信号特性和传输环境自动调整编码参数的技术。其目的是在不同的网络状况和音质要求下&#xff0c;…

6.1物联网RK3399项目开发实录-驱动开发之ADC驱动(wulianjishu666)

物联网嵌入式开发源码例程&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1B3oqq5QBhN-VmTFt9CI-7A?pwd2ihg ******************************************************************************************* ADC 使用 简介 AIO-3399J 开发板上的 AD 接口有两种…

服务未注册到nacos通过gateway转发的配置

1.现实场景 服务需要部署到内网阿里云&#xff0c;通过edas可以进行服务的自动部署和注册&#xff0c;但是有些服务需要调用同一环境中的C命令&#xff0c;于是通过建立ECS服务器&#xff0c;进行jar包的部署&#xff0c;那么在新建的ECS部署的jar包如何通过gateway转发&#…

5-规范设计(下):commit信息风格迥异、难以阅读,如何规范?

我们在做代码开发时&#xff0c;经常需要提交代码&#xff0c;提交代码时需要填写 Commit Message&#xff08;提交说明&#xff09;&#xff0c;否则就不允许提交。 所以在 Go 项目开发时&#xff0c;一个好的 Commit Message 至关重要&#xff1a; 可以使自己或者其他开发人…