微信云开发支持CSV导入数据库,数字形格式编号首位0丢失,咋办?

当CSV格式数据导入数据库时 , 纯数字格式的编号 , 当首位为0时 , 导入数据库后 , 生成的字段类型是数字型 , 自动舍弃了前面的0 , 导致编号有误 。 本文记录了几种非技术处理方式 , 曲线解决此问题 。 方法比较低级 , 高手绕行 , 有更好地方法望不吝赐教!
前几天进行小程序开发 , 结合新高考方案 , 增加了志愿填报工具“查询报考科目要求”功能 , 在将数据导入小程序后台云开发数据库过程中 , 再现了CSV格式数据导入过程中 , 纯数字格式的编号 , 导入后在数据库中生成的字段为数字型 , 自动舍弃了前面的0 。
微信云开发支持CSV导入数据库,数字形格式编号首位0丢失,咋办?
文章图片
原始数据
这个问题不仅在云开发数据库中有 , 其它数据库导入一样存在 。
在开发小程序“2020年招生计划查询”过程中 , 也遇到过类似问题 , 网上查询 , 看到许多人有一样的困惑 , 查了很多资料 , 没发现简单有效的技术解决方案 。
编号数字长度固定的解决办法
上次遇到这个问题时 , 经过仔细观察 , 发现所需编号的数字长度一致 , 计划院校编号为4位 , 计划编号为8位 。
发现这个规律后 , 导入的数据就不处理了 , 直接在程序里进行补位:
微信云开发支持CSV导入数据库,数字形格式编号首位0丢失,咋办?】比如正常编号应为4位数 , 但从数据库取到的数字是个位数 , 则强制转换成字符型 , 前面加3个0;
从数据库取到的编号数字是两位数 , 则强制转换成字符型后 , 前面加2个字符0;
以此类推 。
微信云开发支持CSV导入数据库,数字形格式编号首位0丢失,咋办?
文章图片
代码示例
此种变通方法虽然解决了编号问题 , 但处理起来比较麻烦 , 每次用到编号时 , 都要处理 , 增加了代码量 , 也影响运行速度 。
不管编号是否固定 , 都能完美解决的简单处理方式
这次遇到的编号是不固定长度的 , 上次那个笨方法不灵了 。
想办法 , 还是从数据库端处理 , 让存入数据库的数据保持正确格式 。
憋了半天 , 突然发现 , 字符和数字混合的数据 , 导入数据库后即是字符型字段 , 可以保留原格式 。
灵光闪现:把原始数据中的编号 , 统一加上特殊字符 , 导入数据库后再把特殊字符处理掉 , 岂不是一劳永逸的方案吗!
说干就干 , 在EXCELL中 , 运用VBA , 自动将编号所在行的值添加特殊字符 , 如图:
微信云开发支持CSV导入数据库,数字形格式编号首位0丢失,咋办?
文章图片
VBA程序
几行代码搞定 , 转码后导入数据库 , 生成的编号字段类型为字符型 , 如图:
微信云开发支持CSV导入数据库,数字形格式编号首位0丢失,咋办?
文章图片
数据库导入结果
在云开发数据库端 , 可以写个云函数 , 批量去掉编号前的特殊字符 。
此小程序主要是自用 , 加上特殊字符也不伤大雅(主要是懒) , 索性这步也省啦!前端显示界面如图:
微信云开发支持CSV导入数据库,数字形格式编号首位0丢失,咋办?
文章图片
手机端显示界面
这个方法比较低级 , 但简单有效 , 给广大程序猿们提个醒:
条条大道通罗马 , 不必非在技术一条路上走到黑 。
小程序效果请打开查看:
微信云开发支持CSV导入数据库,数字形格式编号首位0丢失,咋办?
文章图片
小程序示例