国家行业代码数据处理为树形结构

本文介绍了如何将国家标准行业代码数据从Excel转换成树形结构,涉及原始数据处理、表结构改造和SQL操作,包括设置pid、id和level字段,以及逐层处理顶级、中间层和子层数据,最终生成可供前端和中台使用的树形结构数据。

一、获取原始数据

原始数据为excel,数据如下图所示:行业代码为国家标准代码,可以自行进行百度搜索

 行业代码规则如下图所示

 二、原始数据处理

1、需求是打算将行业代码按树形展示,而在设计树形表结构的时候通常会有一个key值和父级key值(id与pid);查看原始数据后发现数据已经是按树形进行展示,但是并不是我们要的id和pid的形式,因此我们需要将数据进行处理,这里让产品帮忙配了一下数据,将对应值的父级名称进行了填充,填充后如下图所示:

2、 处理好数据后,直接打开对应数据库,将excel导入(注:导入时需要将上述excel 的第一列删除,保证只有一列表头)

3、修改表结构,将中文列名改为英文列名称,并新增id与pid,level列

 “门类” 重命名为 “mainclass”

“大类” 重命名为 bigclass

“中类” 重命名为 midclass

“小类” 重命名为smallclass

新增id,pid,level列

重命名后表结构如下

三、数据处理 

到此时我们已经完成了原始数据的处理,此时需要将原始数据处理为树形结构了;

处理思路如下:

1、顶级树处理思路:将mainclass的pid设为0,id的值等于mainclass的值,同时设置level层级的值为0

2、中间层树形数据思路:将前一层的值设为本级的pid,将本层级的值设置为id,重复循环,同时设置level层级

因为导入的原始数据仅所处父级值有,其子级值都为空,因此sql处理时则可以直接通过查询子级数据为空时筛选出本级的所有值

顶级树形数据处理:

通过查询大类为空的值筛选出一级

select * from sheet4 where bigclass = ""

设置定级pid为0,id等于查询出值的id 

update sheet4 set pid = 0,id = mainclass,leavel = 1
where  bigclass = ""

处理大类

查询大类下中类的值为空的值,并且本身不能为空的值(本身值为空时,数据更新时会对应到第一级)

select * from sheet4 where midclass = "" and bigclass !=""

更新

update sheet4 set pid = mainclass,id = bigclass,leavel = 2
where midclass = "" and bigclass !="" 

 处理中类

select * from sheet4 where smallclass = "" and midclass !="" 
update sheet4 set pid = bigclass,id = midclass,leavel = 3
where smallclass = "" and midclass !="" 

 处理小类

select * from sheet4 where smallclass !="" 
update sheet4 set pid = midclass,id = smallclass,leavel = 4
where  smallclass !="" 

此时树形结构则已经处理完成,前端和中台直接调用即可

附:sql文件下载:行业代码表结构及数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值