当前位置: 首页 > article >正文

利用客户端导入有关联的业务数据(DBeaver+sql)

前言

        最近有点坑,麻辣烫的活落手上了,上个迭代除了自己的开发任务,还有处理接手的工作。然后节后问题又多,还有前1个迭代没有测试的模块本迭代测试,烦死了。
        这次这个数据处理的活,以后希望可以交出去,写了个文档,这里也顺便分享下。

一、分享内容

目前公寓没有提供设备导入,绑定空间的功能。以前操作都是开发自行处理,这个处理过程就看开发处理思路了。大致分为以下:

  1. 写代码读取Excel处理
  2. 直接数据库手动处理
    写代码可能涉及到本地代码连接生产数据库的问题,怕误操作。公寓项目目前是微服务的,感觉比较麻烦。我这里是采用第二种方式,先建一张设备的复制表,数据通过一些列操作,搞到这个表,确认没有问题了,然后再往正式表插入。
    以上不管通过那种方式都是需要先处理数据,我这里是在Excel处理基本数据,然后在通过sql手段把业务字段补充字段值

二、使用步骤

项目经理提供的设备空间数据,就是简简单单的房号、设备编号等基本信息,具体的社区、楼栋、单元、楼层、空间信息、房间信息就需要自己找关联关系补充了。

1先建一张门锁设备复制表

在这里插入图片描述

2处理基础数据

我这里先处理Excel文件,基础几个字段就行,例如:
在这里插入图片描述

第一行是字段名,下面是从项目经理提供的数据复制过来的。这个字段就根据各个业务具体判断了,我这里其实都还可以更简单,就要一个id、lock_no,source_type。因为我也是摸索的处理,所以写这个教程就懒得改了。

3保存处理的基础数据

我用的DBeaver数据库连接工具,用到的是它的数据导入功能,它支持的格式有csv、xml等。我选择保存为csv格式:
在这里插入图片描述

数据之间都是,号隔开的。第一行字段、下面是数据。

4数据导入复制表

在这里插入图片描述

1) 选择表,点右键,选择“导入数据”

在这里插入图片描述

2) 选择csv文件导入,下一步

在这里插入图片描述

3) 选择csv文件,下一步

在这里插入图片描述

4) 检查表映射,

注意,如果Excel当时设置的字段与表字段不一致,需要自己一个字段一个字段的设置。
在这里插入图片描述

5) 后面就是“下一步”,“继续”

在这里插入图片描述

6) 执行完成后,查验表数据

5处理业务关系

这里就需要结合自己的业务进行处理了,我这里是使用sql更新复制表的其他字段值,通过之前设置的房号。
因为我的关联关系在房间表都有字段冗余了,这里就直接一条sql就可以处理了,如果大家遇到的是多表关联的,也是一样的多次重复这个过程就行。

5.1Sql:

update
	device_lock_copy c,
	office_room r
set
	c.location_id = r.location_id,
	c.location_name = r.location_name,
	c.building_id = r.building_id,
	c.building_name = r.building_name,
	c.unit_id = r.unit_id,
	c.unit_name = r.unit_name,
	c.floor_id = r.floor_id,
	c.floor_name = r.floor_name,
	c.room_id = r.id,
	c.house_id = r.house_id
where
	r.room_number = c.room_name ;

5.2原理

实际就是把关联业务数据的字段更新到复制表的其他字段,通过一个关联条件。

6插入数据到正式表

这个就不说了,你可以沿用刚刚的思路,查询一张表的数据插入到了一张表,也可以保存为插入语句,修改表名后,执行。


总结

  • 思路重要
  • 工具也重要
    就简单写写,也是个笔记,希望能帮到大家,下班!

http://www.kler.cn/news/365595.html

相关文章:

  • java中使用redis的方法
  • frida脚本,自动化寻址JNI方法
  • 智创 AI 新视界 -- 探秘 AIGC 中的生成对抗网络(GAN)应用
  • 【数据分享】全国各省份农业-瓜果类面积(1993-2018年)
  • 使用js-enumerate报错Cannot set properties of undefined
  • Redis Search系列 - 第六讲 基准测试 - Redis Search VS. MongoDB VS. ElasticSearch
  • Linux中安装配置SQLite3,并实现C语言与SQLite3的交互。
  • Python基础之循环语句
  • 近似推断 - 学习的近似推理篇
  • go语言结构体与json数据相互转换
  • 如何动态改变本地的ip
  • 【华为路由】OSPF多区域配置
  • LINUX1.2
  • 主机电子邮件访问:实现高效通信的关键
  • Node.js 23 发布了!不再支持 32 位 windows 系统
  • Ceph入门到精通-Osd db扩容
  • 【赵渝强老师】Hive的内部表与外部表
  • C语言运算符——[]下标运算符
  • 【开源免费】基于SpringBoot+Vue.JS在线视频教育平台(JAVA毕业设计)
  • 离offer更进一步的JVM详细面试题(含答案)
  • ⭐ Unity 序列帧播放脚本
  • NVIDIA发布Nemotron-70B-Instruct,超越GPT-4o和Claude 3.5的AI模型
  • 提示词高级阶段学习day3.2结构化 Prompt 的优势
  • 什么是3D展厅?有哪些应用场景?
  • 0160____declspec(noreturn)的用法
  • vue3中watch的用法以及使用场景以及与watchEffect的使用对比