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

377

被折叠的 条评论
为什么被折叠?



