Kettle导入Excel文件进数据库时,数值发生错误的一种原因

1、问题描述及原因

在使用kettle读取Excel文件、并导入数据库时,需要读取Excel中的数值、日期(或日期+时间、时间)、文本这三种类型的列进来,发现读取其中的数值时,读取的数字就不对。

经调查,原因是,在"导出数据为Excel文件"时,Excel的数值格式,只能接受15位的有效数字,否则,其余的替换为0;而"使用Kettle读取Excel"时,超过17位的数值,读取时后四位会异常。如下图所示:

2、解决方法

当我们将数据库的数值列,导出Excel文件时,应该注意是否超过15位,超过则转为文本格式,才不会发生失真、丢失信息。

另外,当我们读取存在上文这样的超过15位的数值列的Excel文件时,注意先要将整个列转为文本格式,一般有三种方式,最简单的是"分列"功能,WPS也支持该功能,如下图所示(怎样批量将数值型数字转换成文本型数字? - 知乎)。

因为Excel中,本身不支持一键将超长的数值列,整个转为文本格式,所以就算调整了格式,也必须逐行点击一下。

3、日期或时间列的Kettle读取

类似的,日期、日期+时间、时间列的kettle读取,也往往会有转化问题,建议一律按照文本格式来读取,最后按照文本格式导入数据库,后续在数据库中利用相应的函数去转换格式。

相关推荐
123的故事3 小时前
工具分享(7)-多Excel文件内容查询工具
c#·excel·实用工具
hikktn7 小时前
Excel 导出 OOM 预防实战:30 万行从堆溢出到 50MB 的演进
java·excel·easyexcel
yunceqing14 小时前
从Excel调度到TMS平台:物流软件开发避坑清单
大数据·前端·网络·人工智能·excel·推荐算法
什仙14 小时前
Mathcad Prime 对比 Excel/MATLAB/Mathematica:核心优势速览
excel
快乐的哈士奇14 小时前
【Next.js实战②】Excel 派送表动态解析:表头识别与 FIELD_ALIASES 映射
前端·javascript·excel
daols8815 小时前
vue vxe-table 复制数据到 Excel:支持带表头复制
vue.js·excel·vxe-table
海兰1 天前
【web应用】Excel 项目数据自动化分析系统(AI 驱动分析)详细设计与部署指南(附源代码)
前端·人工智能·自动化·excel
2501_930707781 天前
使用 C# 代码读取或删除 Excel 文档属性
excel
hikktn1 天前
Excel 日期格式统一治理:从“显示不全“到“自动兼容“的完整方案
windows·python·excel
霸道流氓气质2 天前
Spring Boot 大数据量 Excel 导入导出功能实现指南
spring boot·后端·excel