使用R语言转存Excel到MySQL

2024-08-22 09:08

本文主要是介绍使用R语言转存Excel到MySQL,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

花了两天时间写了一个Excel数据转换脚本,原需求除了要把数据转存到Mysql中,还要对每一条数据进行拆分和重组,并不容易。最终我利用R语言完成了这个小需求,本着总结学习的想法,在此处将多余逻辑删除,抽离出了最基本的Excel转存Mysql的功能,这样也可以算一个小轮子了。(仅做学习用,Navicat等工具可以直接导入Excel)

本项目已开源至Github,地址:https://github.com/TianZonglin/transferExcelbyR

适用场景和使用要求(暂)

  • 需要处理的表文件以文件夹形式存储
  • 全部的数据表均必须包含相同的列格式,切忌无关表的污染
  • 每个表文件中只有一个Sheet
  • 数据表必须在第三级目录(单文件亦是如此),例如
ecProject\io_Input_Excel_Folder\simples\ORGDATA.XLS
# 分别是:工作目录 -> 输入文件夹(1st) -> 内部自定义的文件夹(2nd) -> 真正的表文件(3rd)

此脚本的特点

  • 批量处理全部输入文件夹下二级文件夹的全部Excel表文件
  • 自动根据所需要转换的Excel表文件在Mysql中创建表
  • 自动检测Excel表文件的数据边界
  • 详细的debug统计信息
  • 合并全部Excel表文件到单一的Mysql数据表
  • 默认不需要对数据库进行操作

使用方法

使用对象

tool_excel2mysql.R,这是通用的转换工具,其他脚本面向特殊的需求。推荐使用** R Studio **运行此代码。

所需要的软件和开发环境

即需要Mysql的环境+Mysql的可视化工具+R环境+R可视化开发工具,上述所有软件均可在网上找到。

注意:更新使用 Navicat 11 premium,原版本太过老旧。百度网盘:https://pan.baidu.com/s/18zg6NNogRVRHHD-fEj9UCg 提取码:cbkj

安装所需要的程序包
# 注意这部分仅运行一次即可
# near line 8
#install.packages("RMySQL")
#install.packages("stringr")
#install.packages("readxl")
#install.packages("readr")
修改工作路径
# near line 14
setwd("C:\\Users\\zonglin\\OneDrive - Universiteit Utrecht\\Desktop\\ecProject\\")
修改Mysql配置
# 默认数据库名称: test
# near line 17
conn = dbConnect(MySQL(), user = 'root', password = 'root', dbname = 'test',host = 'localhost')

# 默认生成的表名称: tb_from_excel
# 如果需要修改,可以直接在代码中全局替换这个字段
# use editor's find/replace function to replace it all.
选择合适的起始列
# 默认起始列数: 1
# 可以自由设置转存的起始列
# near line 222
tmp = transExcel2MysqlDB(tmpPath, cnt, startmark = 1)
设置仅测试部分数据

如果你有大量的Excel文件,且你只想测试此代码或使用日志中的errinfo with finally来捕获Excel的调试信息(可以打开或打不开),则可以修改以下部分。 其只加载有限的表数据。

# near line 85
edata <- edata[30:35,]

日志 (processRecord.csv)

errinfo with summary

这是插入SQL失败的记录。如果使用文件夹包含多个Excel,则每个Excel都可以输出单独的errinfo with summary。 使用此缓存信息,我们可以在Navicat的帮助下自动的找到错误的sql位置。

然后你可以修改 tool_excel2mysql 的代码内容来修复或者直接给我相关反馈。

errinfo with finally

这部分是全局信息,包含无法读取的Excel表信息和最终的统计数据。 如果此处显示了某个excel,那你需要手动检查此文件以查找真正的问题。 有时重新保存(打开然后保存)就可以解决不能读取的问题。

基本上来说,该工具可以顺利地将数据从我的xls、xlsx文件转存到mysql,并且成功率几乎达到100%。 (上面的截图是为了演示errinfo的例子)


English Version


赶紧使用一下吧…



😒 留下您对该文章的评价 😄


这篇关于使用R语言转存Excel到MySQL的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1095838

相关文章

MySQL 主从复制部署及验证(示例详解)

《MySQL主从复制部署及验证(示例详解)》本文介绍MySQL主从复制部署步骤及学校管理数据库创建脚本,包含表结构设计、示例数据插入和查询语句,用于验证主从同步功能,感兴趣的朋友一起看看吧... 目录mysql 主从复制部署指南部署步骤1.环境准备2. 主服务器配置3. 创建复制用户4. 获取主服务器状态5

SpringBoot中六种批量更新Mysql的方式效率对比分析

《SpringBoot中六种批量更新Mysql的方式效率对比分析》文章比较了MySQL大数据量批量更新的多种方法,指出REPLACEINTO和ONDUPLICATEKEY效率最高但存在数据风险,MyB... 目录效率比较测试结构数据库初始化测试数据批量修改方案第一种 for第二种 case when第三种

一文详解如何使用Java获取PDF页面信息

《一文详解如何使用Java获取PDF页面信息》了解PDF页面属性是我们在处理文档、内容提取、打印设置或页面重组等任务时不可或缺的一环,下面我们就来看看如何使用Java语言获取这些信息吧... 目录引言一、安装和引入PDF处理库引入依赖二、获取 PDF 页数三、获取页面尺寸(宽高)四、获取页面旋转角度五、判断

C++中assign函数的使用

《C++中assign函数的使用》在C++标准模板库中,std::list等容器都提供了assign成员函数,它比操作符更灵活,支持多种初始化方式,下面就来介绍一下assign的用法,具有一定的参考价... 目录​1.assign的基本功能​​语法​2. 具体用法示例​​​(1) 填充n个相同值​​(2)

MySql基本查询之表的增删查改+聚合函数案例详解

《MySql基本查询之表的增删查改+聚合函数案例详解》本文详解SQL的CURD操作INSERT用于数据插入(单行/多行及冲突处理),SELECT实现数据检索(列选择、条件过滤、排序分页),UPDATE... 目录一、Create1.1 单行数据 + 全列插入1.2 多行数据 + 指定列插入1.3 插入否则更

MySQL深分页进行性能优化的常见方法

《MySQL深分页进行性能优化的常见方法》在Web应用中,分页查询是数据库操作中的常见需求,然而,在面对大型数据集时,深分页(deeppagination)却成为了性能优化的一个挑战,在本文中,我们将... 目录引言:深分页,真的只是“翻页慢”那么简单吗?一、背景介绍二、深分页的性能问题三、业务场景分析四、

MySQL 迁移至 Doris 最佳实践方案(最新整理)

《MySQL迁移至Doris最佳实践方案(最新整理)》本文将深入剖析三种经过实践验证的MySQL迁移至Doris的最佳方案,涵盖全量迁移、增量同步、混合迁移以及基于CDC(ChangeData... 目录一、China编程JDBC Catalog 联邦查询方案(适合跨库实时查询)1. 方案概述2. 环境要求3.

Spring StateMachine实现状态机使用示例详解

《SpringStateMachine实现状态机使用示例详解》本文介绍SpringStateMachine实现状态机的步骤,包括依赖导入、枚举定义、状态转移规则配置、上下文管理及服务调用示例,重点解... 目录什么是状态机使用示例什么是状态机状态机是计算机科学中的​​核心建模工具​​,用于描述对象在其生命

SQL server数据库如何下载和安装

《SQLserver数据库如何下载和安装》本文指导如何下载安装SQLServer2022评估版及SSMS工具,涵盖安装配置、连接字符串设置、C#连接数据库方法和安全注意事项,如混合验证、参数化查... 目录第一步:打开官网下载对应文件第二步:程序安装配置第三部:安装工具SQL Server Manageme

C#连接SQL server数据库命令的基本步骤

《C#连接SQLserver数据库命令的基本步骤》文章讲解了连接SQLServer数据库的步骤,包括引入命名空间、构建连接字符串、使用SqlConnection和SqlCommand执行SQL操作,... 目录建议配合使用:如何下载和安装SQL server数据库-CSDN博客1. 引入必要的命名空间2.