如何利用大模型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,一经查实,立即删除!

相关文章

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

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

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…

多视图三维重建-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;在状态恢复后…

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

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

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

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

基于SSM的百货中心供应链管理系统设计与实现(论文+源码)_kaic

摘 要 社会发展日新月异&#xff0c;用计算机应用实现数据管理功能已经算是很完善的了&#xff0c;但是随着移动互联网的到来&#xff0c;处理信息不再受制于地理位置的限制&#xff0c;处理信息及时高效&#xff0c;备受人们的喜爱。本次开发一套百货中心供应链管理系统有管理…

u盘插在电脑上显示要格式化磁盘怎么办

咨询&#xff1a;“U盘插入电脑&#xff0c;提示需要先格式化 才可使用。对于此种情况&#xff0c;在不需要格式化的情况下&#xff0c;是否可以恢复U盘内容&#xff1f;谢谢” 当我们尝试将U盘插入电脑时&#xff0c;有时会遇到一个令人困惑的提示&#xff1a;电脑要求我们格式…

Game Audio Programming

音频编程时游戏开发中最容易忽略&#xff0c;学习资源又是很少的环节。接下来&#xff0c;你将和我探索人耳的工作机制。 what is sound? 我们可以解释电视机是如何通过眼睛传递视觉信息的&#xff0c;但却往往无法对听觉信息做出类似的解释。 对声音的科学研究被称为声学&…

vlan间单臂路由

【项目实践4】 --vlan间单臂路由 一、实验背景 实验的目的是在一个有限的网络环境中实现VLAN间的通信。网络环境包括两个交换机和一个路由器&#xff0c;交换机之间通过Trunk链路相连&#xff0c;路由器则连接到这两个交换机的Trunk端口上。 二、案例分析 在网络工程中&#…

跃然纸上的灵感再现,手绘风格的开源绘图白板工具:Excalidraw

Excalidraw&#xff1a;即绘即思&#xff0c;直观呈现未来流程图&#xff01;- 精选真开源&#xff0c;释放新价值。 概览 在撰写文章或构建演示案例的过程中&#xff0c;为了增强视觉表现力和信息传达深度&#xff0c;适时融入图表或图形显得至关重要。Excalidraw作为一款基于…

【生活】相机/图像各参数

文章目录 专业模式图片编辑-滤镜实体滤镜软件模拟滤镜 图片编辑-增强曝光亮度对比度饱和度自然饱和度色温色调高光阴影HSL色调分离褪色颗粒锐化晕影清晰度暗角 参考 专业模式 第一个参数WB是白平衡&#xff0c;调节色彩的。 第二个是对焦F&#xff0c;近距离拍摄物体&#xf…

酷体体育科技加入飞桨技术伙伴计划,共同打造“AI随身教练”体育分析新模式...

近日&#xff0c;陕西酷体体育科技有限公司正式加入飞桨技术伙伴计划&#xff0c;双方将共同努力在AI体育技术分析领域&#xff0c;创新打造“AI体育”新模式&#xff0c;助力体育训练、康复、人才选拔数智化转型。通过大模型技术赋能体育&#xff0c;持续挖掘AI技术在体育领域…

unbuntu mysql8.0新建用户及开启远程连接

MySQL更新到8.0以上版本后&#xff0c;在创建连接远程的用户的时候和之前5.x的版本有了很大的不同&#xff0c;不能使用原来同时创建用户和授权的命令。 以下是记录的MySQL8.0创建用户并授权的命令&#xff1a; 查看用户表&#xff1a; user mysql; select host,user,authen…

GT收发器第四篇_QPLL和CPLL工作原理

文章目录 前言一、CPLL工作原理二、QPLL工作原理 前言 每个channel的时钟结构如图&#xff1a; Transceiver内部时钟来源可以是QPLL也可以是自己的CPLL。其内部TX 和 RX 时钟分频器可以单独从 QPLL 或 CPLL 中选择时钟&#xff0c;允许 TX和 RX 数据通道使用不同的参考时钟输入…

Unity-通过AB包使用SpriteAtlas图集(基于unity2018)

项目遇到了一个性能问题&#xff0c;需要优化UI。其中就涉及UI的合批问题&#xff0c;其中自然而然就会关联到图集的概念。旧版图集&#xff0c;Legacy Atlas&#xff0c;还没有太研究。今天主要看一下SpriteAtlas怎么使用的。 因为我们项目资源工程和Runtime是分离的&#xf…

python实战之进阶篇(一)

定义类 1. 构造方法 2. 实例方法 3. 类方法 类似于Java中的静态方法, 使用方式: 类名.类方法 4. 私有变量 5. 私有方法 6. 使用属性set和get

【二叉树】Leetcode 104. 二叉树的最大深度【简单】

二叉树的最大深度 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例1 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;3 解题思路 二叉树的最大深度可以通过递归方式来求解…