深入了解数据导入的一些解决方案

2023-11-15

项目中除了有数据导出之外,也存在批量数据导入的场景。比如通过Execl电子表格进行批量开卡,批量导入用户或者部门信息等。今天探讨一下常见的数据导入方案。

0x01:同步导入

如果批量导入的数据就是几十条到一两百条的数据量的话;而且每条数据导入时,所做的业务不是特别耗时的话,可以采用同步导入方案。该方案只需一个接口,该接口的主要功能是上传Execl电子表格数据,然后解析Execl电子表格里的数据,进行业务操作,导入到数据库里即可。
在这里插入图片描述

如果有需要的话,可以在解析Execl电子表格的数据时,把对数据的验证记录按照同一个批次保存到数据库,然后返回一个批次号 batchNo 给客户端,然后在写一个接口导出导入的数据的各记录的导入情况。
在这里插入图片描述

0x02:异步导入

如果数据量比较大的话,同步导入显然不合适,可以采用异步导入数据的方案。主要设计两个接口。

第一个接口:该接口负责上传Execl电子表格;然后在Redis设置一个未完成的标识,同时开启一个线程执行解析Execl电子表格数据;最后执行业务操作把数据导入到数据,完成后把在Redis设置的标识标志成完成;

第二个接口:用做轮询,获取导入数据完成的情况
在这里插入图片描述

同理,如果需要记录记录行的验证情况,可以把验证的记录行情况记录到数据库,然后再设计一个接口导出记录行的导入情况。

0x03:导入服务

前面两种方案,都没有把上传的Execl电子表格文件、导入时间、导入人的相关信息记录下来。如果出现一些意向不到的问题的话,非常不方便排查错误。所以有时需要设计一个库表,把这些信息记录下来,方便在出现问题时,进行排查。设计的记录表的字段可以大致如下:

id:主键id

file_path:上传的文件的路径

file_type:文件类型

module:  所属业务模块

opr_state:导入的总体状态,0成功,1失败

upload_time:上传时间

upload_user:上传人

这个方案再结合第一种或者第二种方案,就可以完成一个导入服务功能。

总体来说设计一个比较好的导入功能需要两张表和三个接口

  • 两张表:导入信息记录表、Execl记录行数据验证状态及该行导入情况表

  • 三个接口:上传Execl电子表格与异步数据导入功能接口、轮询是否导入成功状态接口、下载导入Execl记录行数据验证状态及该行导入情况接口

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

深入了解数据导入的一些解决方案 的相关文章

随机推荐

  • Python 印章代码(附有解析)

    1 题目 2 代码 共有n种图案的印章 每种图案的出现概率相同 小A买了m张印章 求小A集齐n种印章的概率 n m map int input split dp 0 for i in range n 1 for j in range m 1
  • 如何用计算机测试交易系统,一种自动售票机交易功能的测试系统和方法与流程...

    本发明涉及一种自动售票机检测领域 尤其是涉及一种自动售票机交易功能的测试系统和方法 背景技术 轨道交通的自动售票机 TVM 在接入线网投用之前 必须进行功能测试 以确保功能完备 交易完整 正常使用 目前的测试方法是通过人工购买车票的方法来测
  • Spring MVC如何进行数据校验呢?

    转自 Spring MVC如何进行数据校验呢 在web开发中 我们需要保证用户输入的合法性 那么SpringMVC中如何保证web 应用的合法性呢 下文将一一道来 如下所示 下文只讲述SpringMVC后端的验证方法 前端验证 由用户自身采
  • 独立按键(多个按键)控制LED移位

    这个代码设置的是两个按键对LED移位 分别是P3 1向右移 P3 0向左移 include
  • pycharm错Error updating package list: connect timed out误:解决(更换镜像源)

    问题 可能是网络问题 导致无法加载 报错 Error updating package list connect timed out 解决 File setting project interpreter 加号 manage reposit
  • vmware+CentOS5.0上安装oracle 10g数据库

    一 针对 Oracle 配置 Linux Linux 软件现已安装完毕 您需要针对 Oracle 对其进行配置 本部分将逐步讲解针对 Oracle 数据库 10g 配置 Linux 的过程 验证系统要求 要验证系统是否满足 Oracle 1
  • Docker简介以及安装使用(一)

    疫情下的上海 按下了暂停键 期待早日重回繁华 上海加油 文章目录 Docker简介 Docker的出现 Docker的优点 Docker的局限性 Docker架构 Docker的安装 Docker简介 Docker 是一个开源的应用容器引擎
  • 反馈判断方法

    负反馈放大器可组合成四种类型 即 电流串联 电流并联 电压串联 电压并联四种负反馈类型 正负反馈的判断 正负反馈的判断使用瞬时极性法 瞬时极性是一种假设的状态 它假设在放大电路的输入端引入一瞬时增加的信号 这个信号通过放大电路和反馈回路回到
  • 设计模式--Template模式 VS Strategy模式

    Template 模式和Strategy模式所要解决的问题类似 而且通常可以互换使用 Template模式使用继承来解决问题 Strategy模式使用委托来解决问题 如图1 template 模式 基类 BubbleSorter实现了通用算
  • 钉钉小程序头像剪切并压缩上传

    引入方式 json文件 usingComponents dd cropper components dd cropper dd cropper axml
  • 个人支付接口

    分享个人可以用的支付接口 用来实现收款实时回调 不用企业资质 不用签约 很方便 1 接口地址 请求地址 https www gogozhifu com shop api createOrder 2 注意事项 数据编码统一为utf 8 Req
  • 仿滴滴打车百度地图定位查找附近出租车或门店信息

    随着技术的发展 开发的复杂度也越来越高 传统开发方式将一个系统做成了整块应用 经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改 造成牵一发而动全身 通过组件化开发 可以有效实现单独开发 单独维护 而且他们之间可以
  • 前置++与后置++区别 以及效率

    之前在杭州实习面试中科视拓时候面试官问道 前置 与后置 区别 以及效率 打破对C 的认识 后来 寒假回来看书后才恍然大悟 前置 和后置 的区别 C专家编程 中有如下描述 P276 人民邮电出版社 a表示取a的地址 增加它的内容 然后把值放在
  • 2021-Linux系统与管理 - (二)Linux系统命令【超详细】

    自说 Linux命令 Linux命令行的格式 Linux系统的基本命令 自说 学习Linux必定要学习的就是命令了 凡事都是一步一个脚印 这样才踏实 呢么在学习Linux这条道上 我们更加要循序渐进 先学会走再勇往直前 以下便是Linux命
  • 【Mysql】图解左、右、内与全连接

    一 前言 使用学生表与成绩表来演示Mysql中的各种连接查找 学生表的建表语句如下 CREATE TABLE student id int 11 NOT NULL AUTO INCREMENT COMMENT 自增序号 st id int
  • 深度学习的名词解释

    深度学习入门必须理解这25个概念 神经网络基础 1 神经元 Neuron 就像形成我们大脑基本元素的神经元一样 神经元形成神经网络的基本结构 想象一下 当我们得到新信息时我们该怎么做 当我们获取信息时 我们一般会处理它 然后生成一个输出 类
  • 【C语言程序设计实验】试卷管理系统(完整代码+函数详解) -->源代码文件文章末尾免费领取

    目录 实验简介 一 实验要求 二 实验代码 1 完整代码 2 代码解析 1 get next question number 2 add question 3 delete question 4 backup questions 5 del
  • js实现一个简易计算器

    正文 使用js实现一个简易计算器 可以进行简单的加减乘除 js代码 function jishuan 1 获取num1 num2 var num1 document getElementById num1 value var num2 do
  • TCP协议三次握手和四次分手以及数据传输过程

    1 三次握手 TCP是面向连接的 在面向连接的环境中 开始传输数据之前 在两个终端之间必须先建立一个连接 建立连接同步的过错称为三次握手 具体过程如下 1 当主机A想同主机B建立连接 主机A会发送SYN给主机B 初始化序列号seq x 主机
  • 深入了解数据导入的一些解决方案

    项目中除了有数据导出之外 也存在批量数据导入的场景 比如通过Execl电子表格进行批量开卡 批量导入用户或者部门信息等 今天探讨一下常见的数据导入方案 0x01 同步导入 如果批量导入的数据就是几十条到一两百条的数据量的话 而且每条数据导入