热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

linq清除一条数据中的某个字段值_B端通用批量数据导入方案设计

点击上方蓝色字体,关注我B端通用批量数据导入方案设计文|3548字估计阅读|9分钟引题B端产品经常遇到大量数据录入的需求。如春季招聘完成后,给新招的12

8241264c596752739b2629c912b18dbf.gif

点击上方蓝色字体,关注我

B端通用批量数据导入方案设计

文 | 3548字

估计阅读 | 9分钟

引题

B端产品经常遇到大量数据录入的需求。如春季招聘完成后,给新招的120个员工建立员工档案,并创建员工帐号。如果逐条将大量的数据录入系统,将花费用户不少的时间。

1124b265acf78ac07e3e7c171b9c816b.png

新员工的员工信息通常会填写在一个excel表格中,人力在汇总后,录入系统。

如果逐个录入,每创建一个员工的员工档案,有以下几个步骤:

1. 打开创建员工档案的表单页;

2. 对照着员工信息,在表单中输入员工姓名、手机号、身份证号······;

3. 保存数据;

4. 打开新的表单页,重复以上操作。

如果录入1个员工需要1分钟,120个员工,就需要花费2个小时。

与此同时,用户在大量地、重复做同样的操作时,犯错的概率也会增加。这导致录入的数据可能出现问题。

1124b265acf78ac07e3e7c171b9c816b.png

将张三的身份证号,错误地粘贴到了李四的员工档案中,或者填写到其他的字段中。

在批量数据录入场景下,数据导入功能,用户可以将正确的原始数据整理到表格中,快速导入到数据库。有效解决“逐条数据录入效率低下”和“操作失误导致数据错误”问题。

如何设计批量数据导入功能?

用户在批量导入数据前,需要先将要录入系统的数据,整理成导入文件。再将导入文件上传到系统中,系统完成数据校验后,再将导入文件中的数据,写入数据库。

从这个流程可以得出,批量数据导入功能的核心点有:合理设计导入模版、明确数据校验规则、异步导入数据、导入结果处理。

1.合理设计导入模版

由于excel具备强大的批量数据处理能力和便捷的操作体验,用excel整理导入文件是最合适的方式。

但用户自己并不清楚导入数据要如何整理导入文件中。因此,我们需要设计一个导入模版,按业务数据表的格式要求,对要导入的数据进行格式规范,确保要导入的数据合法。

1124b265acf78ac07e3e7c171b9c816b.png

员工信息表中“性别”字段的要求是:必填、枚举类型(男、女)。若导入表格中对应列的值出现了空值或“不详”,则数据非法。

导入非法的数据,就会导致业务数据出现错误。

在设计导入模版时,要根据业务的实际情况,梳理出所有的字段,确定每个字段的格式要求,并给出对应的提示信息。具体要求如下:

1. 明确字段格式:关键字段都要有明确的要求,以引导用户准确整理导入文件。如手机号字段必须是11位数字,性别必须是男、女中的一个值;

2. 精确到最小颗粒:导入模版中的每一列,都要精确到最小颗粒,尽量不要将多个字段混在一列中,否则在校验数据时,必须要先拆分单元格的内容,才能对单个数据值进行校验,增加数据校验的复杂度。如省、市、区应该分3列,而不是一列导入;

3. 在表格中给出填写规范提示信息,以减少用户填写错误的概率。

d43432cb153c50db81c1fcb893dc5096.png

在导入数据前,要引导用户下载导入模版,并按模版中的格式要求,整理好需要录入系统的数据。

▋2.明确数据校验规则

2.1导入文件格式校验

数据校验的第一步,是校验导入文件的格式是否正确。如果导入文件格式只支持excel,而用户上传了pdf格式的文件,那导入一定无法完成。

2.2导入文件表头校验

格式校验没问题后,再校验导入文件表头是否与数据表中,需要导入的字段是否匹配。

表头校验的方法是:将导入文件的表头每个字段与数据表需要导入的字段逐一比对,检查同一序号对应列的字段名是否一致。只有导入文件所有字段序号和字段名与数据表完全一致时,导入文件表头校验才匹配。

1124b265acf78ac07e3e7c171b9c816b.png

导入文件中第一列是“手机号”,但数据表第一列是“姓名”,即为不匹配;

导入文件第一列是“手机号”,数据表第一列是“手机号码”,也是不匹配。

数据导入时,系统会按照字段名进行匹配,将导入文件中的数据,写入数据表中对应位置的、同名的字段中。

若不匹配,在数据导入时,导入文件中的数据无法找到对应的数据表字段,从而无法导入。

2.3导入文件字段值校验

表头校验正常后,再对导入文件中具体的字段值做校验,确认其是否合法。

如果不对字段值进行合法性校验,直接导入到数据表中,就有可能导致业务数据错误,甚至引发严重事故。

1124b265acf78ac07e3e7c171b9c816b.png

导入文件中“奖励积分”列的值,本来应该填写奖励的积分数量,但被错误地填入了用户手机号,结果导致每个用户发放了100多亿个积分。

字段值校验的方法是:根据数据表对各个字段值的格式定义,逐个检查导入文件中的对应字段的值是否合法。字段值校验可能会遇到以下不合法的情况:

1. 基本要求不满足:导入模版中有要求值的字符类型、字符长度、业务规则限制,但导入文件就中的值不满足。若强行导入,会导致数据错误。如导入模版要求是11位数字,导入文件的值是中英文的字符;

2. 找不到匹配的值:导入文件中的部分字段的值,要求在已有数据表中存在,但数据表中查不到。若强行导入,会导致该数据找不到对应的归属主体。如导入文件中“用户ID”的值,在用户表中找不到;

3. 与其他字段的值不匹配:某几个字段的值之间有联动关系,但导入文件中的值联动关系错误。若强行导入,会导致对应数据错乱。如导入文件有员工籍贯所在地,分省、市、区3列,若省的值为广东,则该条数据中,市的值必须是广东省的地级市,不允许出现了其他省的市。

数据校验完成后,根据数据校验结果,决定是否导入数据,或导入哪些行的数据。对于所有列的值都合法的数据行,可以直接导入;而数据行的任意一列的值不合法,则该行数据无法导入。

▋3.使用异步方式,快速导入正确数据

在批量录入数据的场景下,用户的核心需求是:快速将数据录入系统。产品方案应该要围绕该核心需求来设计。

3.1 字段值完全正确的数据行,可以直接导入

在执行数据导入前,我们有必要先确定导入文件中,每一行的数据都完全正确吗?其实并不需要。

用户在整理导入文件时,难免会出一些小错误。比如导入文件有100行数据,某1行数据的某个值错误,但剩下的99行数据的值都是正确的。

如果要求所有数据都完全正确,才能被导入,那就会导致完全正确的大部分数据,不能更“及时”地录入系统中,必须要将其中极少数错误的数据修正后,重新检验数据,再尝试导入。

更高效的做法是:导入文件中,字段值完全正确的数据行,可以直接导入,而错误的部分数据行,提供下载功能,让用户修改后,重新导入。

3.2覆盖更新已有数据

在系统导入过程中,若某条数据在系统中已经存在,而导入文件也包含了该条数据,此时应该如何处理?

在产品的角度看,通常有三种处理方式:

1. 不允许导入。若用户需要更新该条数据,就需要先删除已有数据再重新导入,或到系统中修改;

2. 询问用户是否要覆盖已有数据。系统要找出已存在的数据,标记两者之间的差异,用户选择是否要更新后,自动执行;

3. 直接覆盖已有数据。用户无需做任何处理。

很明显,第3种处理方式的用户操作成本及研发成本都是更低的。

1124b265acf78ac07e3e7c171b9c816b.png

导入5月份的考试成绩时,通过学号查询,发现张三的成绩已经导入过了。此时,将根据导入数据,更新张三的成绩。

采用这种方式,默认了需要导入的数据,比系统中已存在的数据更及时、更准确。因此,我们必须要用户:若检测到导入数据在数据表中已存在,则更新该条数据。

3.3 系统异步处理

如果需要导入的数据量大,且系统性能不足,系统就要花费较长的时间来处理。在等待系统处理完成期间,用户想关掉导入页面,去做其他操作,怎么办?

从研发的角度看,系统处理数据,通常有同步和异步两种方式。

所谓的同步,指发起请求后,后端必须立即响应,处理完成时返回结果。而异步,指的是发起请求后,后端会先接收请求,并在“自己”方便的时候进行处理,处理完成后,再返回结果。

如果使用同步方式,就会导致用户等待时间过长,甚至最后可能因为超时而导入失败,给用户带来极大的负面感受。而使用异步方式导入,用户上传文件后,即可关闭导入窗口,放心地去做其他操作,且不会因超时而导入失败。

异步导入,既避免用户浪费时间等待,又降低了导入失败的概率,用户体验明显更好。

▋4.显示导入结果,引导下载导入失败数据

数据导入完成后,需显示导入结果,告知用户导入成功了多少、失败了多少。

对于导入失败的数据,提供下载导入失败数据的入口,并在导出文件中标记出不正确的值。这样,用户可以在修正后,重新导入。

批量导入方案的优点

上文描述的批量导入方案,不仅能满足用户批量录入数据的需求,还能低成本地复用到其他功能模块。

使用异步的方式来导入,用户将导入文件上传到系统后,即可放心地去做别的工作,数据导入完成后,再来查看导入结果。大幅度提升了数据录入效率。

当另一个功能模块也需要用到数据导入功能时,只需要修改导入模版和字段值校验规则,即完成产品方案设计和开发。有效提升了产品方案输出和功能开发的效率,降低人力成本。

总结

批量数据导入能快速将数据录入系统,降低企业的人力成本。在设计产品方案时,应该在确保导入性能足够的条件下,避免用户等待,并降低产品和研发的人力成本,提高用户和产品研发团队的工作效率。

12dc9037fa717d1a9ba55a3314ea22a6.png

0c4c4eb8e9a819086f6409128a0c66b0.png

70e2e7863b00774bab43c811b35710a9.png

5年产品经理

专注后台产品方向

长按扫码加好友



推荐阅读
  • 本文介绍了一个免费的asp.net控件,该控件具备数据显示、录入、更新、删除等功能。它比datagrid更易用、更实用,同时具备多种功能,例如属性设置、数据排序、字段类型格式化显示、密码字段支持、图像字段上传和生成缩略图等。此外,它还提供了数据验证、日期选择器、数字选择器等功能,以及防止注入攻击、非本页提交和自动分页技术等安全性和性能优化功能。最后,该控件还支持字段值合计和数据导出功能。总之,该控件功能强大且免费,适用于asp.net开发。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • PDF内容编辑的两种小方法,你知道怎么操作吗?
    本文介绍了两种PDF内容编辑的方法:迅捷PDF编辑器和Adobe Acrobat DC。使用迅捷PDF编辑器,用户可以通过选择需要更改的文字内容并设置字体形式、大小和颜色来编辑PDF文件。而使用Adobe Acrobat DC,则可以通过在软件中点击编辑来编辑PDF文件。PDF文件的编辑可以帮助办公人员进行文件内容的修改和定制。 ... [详细]
  • 在线教育平台的搭建及其优势
    在线教育平台的搭建对于教育发展来说是一次重大进步。未来在线教育市场前景广阔,但许多老师不知道如何入手。本文介绍了在线教育平台的搭建方法以及与传统教育相比的优势,包括时间、地点、空间的灵活性,改善教育不公平现象以及个性化教学的特点。在线教育平台的搭建将为学生提供更好的教育资源,解决教育不公平的问题。 ... [详细]
  • 阿里云虚拟主机安装多个织梦系统的方法
    本文介绍了在阿里云虚拟主机上安装多个织梦系统的方法。通过创建不同名称的文件夹并将不同的域名解析到对应的目录,可以实现多个系统的安装。在安装过程中需要注意修改数据库前缀,并在系统设置中还原数据库。同时还介绍了阿里云虚拟主机二级域名绑定二级目录和域名重定向的用法。 ... [详细]
  • 我们有(据我所知)星型模式SQL数据库中的数据文件。该数据库有5个不同的文件,扩展名为 ... [详细]
  • MVC设计模式的介绍和演化过程
    本文介绍了MVC设计模式的基本概念和原理,以及在实际项目中的演化过程。通过分离视图、模型和控制器,实现了代码的解耦和重用,提高了项目的可维护性和可扩展性。详细讲解了分离视图、分离模型和分离控制器的具体步骤和规则,以及它们在项目中的应用。同时,还介绍了基础模型的封装和控制器的命名规则。该文章适合对MVC设计模式感兴趣的读者阅读和学习。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 图像因存在错误而无法显示 ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
author-avatar
郭昊天886688
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有