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

1、问题描述及原因

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

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

2、解决方法

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

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

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

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

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

相关推荐
泉城老铁10 小时前
EasyPoi实现百万级数据导出的性能优化方案
java·后端·excel
泉城老铁10 小时前
Spring Boot 整合 EasyPoi 实现复杂多级表头 Excel 导出的完整方案
java·后端·excel
sql2008help11 小时前
数据分页异步后台导出excel
java·excel
小灰灰搞电子13 小时前
Qt 使用QtXlsx库处理Excel文件
qt·excel
爱编码的程序员13 小时前
python 处理json、excel、然后将内容转化为DSL语句,适用于数据处理(实用版)
人工智能·python·ai·json·excel·数据处理·dsl
ashcn200113 小时前
vim 组件 使用pysocket进行sock连接
python·vim·excel
家有狸花13 小时前
EXCEL删除数据透视表
excel
wtsolutions16 小时前
免费MCP: JSON 转 Excel MCP
json·excel·api·csv·mcp·wtsolutions
Hygge-star1 天前
【Excel】利用函数和Power Query进行数据分析
数据挖掘·数据分析·excel
Dxy12393102161 天前
python创建一个excel文件
开发语言·python·excel