Excel多级结构转成树结构形式

第一步:Excel文件的形式如下

第二步:转换成树结构可选形式

第三步:具体怎么实现?

(1)、需要借助数据库中表来存储这些字段,一张表(aa)存Excel文件中的所有数据,一张作为处理表(bb)作为中转,把处理好的数据再放到存储表(aa)中。

(2)、具体操作

a、如果没有建表语句,那就从库中熟悉的表中来复制表结构;

--4*2=8列表,字段长度足够就可以(这里是100),c表示code即id,n表示name即名称
create table aa as select casedjrxm c1,casedjrxm n1,casedjrxm c2,casedjrxm n2,casedjrxm c3,casedjrxm n3,casedjrxm c4,casedjrxm n4 from ywcl_case where 1=2;
--2列临时表
create table bb as select casedjrxm c,casedjrxm n from ywcl_case where 1=2;

b、直接使用建表语句

CREATE TABLE "aa"
(
"c1" VARCHAR2(50),
"c2" VARCHAR2(50),
"c3" VARCHAR2(50),
"c4" VARCHAR2(50),
"c5" VARCHAR2(50),
"c6" VARCHAR2(50),
"n1" VARCHAR2(50),
"n2" VARCHAR2(50),
"n3" VARCHAR2(50),
"n4" VARCHAR2(50),
"n5" VARCHAR2(50),
"n6" VARCHAR2(50)) STORAGE(ON "MAIN", CLUSTERBTR) ;
COMMENT ON TABLE "aa" IS 'aa';CREATE TABLE "BB"
(
"id" VARCHAR2(50),
"c" VARCHAR2(50),
"n" VARCHAR2(50)) STORAGE(ON "MAIN", CLUSTERBTR) ;
COMMENT ON TABLE "BB" IS 'BB';

c、把Excel文件中的数据要插入到已经建好的表(aa)中

="insert into aa(n1,n2,n3,n4) values('"&A2&"','"&B2&"','"&C2&"','"&D2&"');"

以这种方式把Excel文件的数据全部获取到,然后在数据库中执行;

select * from aa;可以查询到已成功插入的全部数据。

d、对aa表中的数据进行处理,目前给到的数据只有文字,而没有编码的,所以需要给每一级都创建一个id。处理数据sql命令如下

一、处理第一级的父节点

truncate table bb;
--一级插入临时表
insert into bb(n) select distinct n1 from aa;
--以行数补齐3位做id
update bb set c=LPAD(rownum, 3, '0');
--回填
update aa set c1=(select c from bb where n=n1);commit;

二、处理第二、三、四级节点,有两种方式

-----------方式1:不区分下级节点顺序-------
/*
delete from bb;
--二级插入临时表
insert into bb(n) select distinct n1||n2 from aa where n2 is not null;
--以行数补齐3位做id
update bb set c=LPAD(rownum, 3, '0');
--回填
update aa set c2=(select c from bb where n=n1||n2);
commit;delete from bb;
--三级级插入临时表
insert into bb(n) select distinct n1||n2||n3 from aa where n3 is not null;
--以行数补齐3位做id
update bb set c=LPAD(rownum, 3, '0');
--回填
update aa set c3=(select c from bb where n=n1||n2||n3);
commit;delete from bb;
--四级级插入临时表
insert into bb(n) select distinct n1||n2||n3||n4 from aa where n4 is not null;
--以行数补齐3位做id
update bb set c=LPAD(rownum, 3, '0');
--回填
update aa set c4=(select c from bb where n=n1||n2||n3||n4);
commit;
*/
-----------方式1:不区分下级节点顺序-------

-----------方式2:区分下级节点顺序:即每个下级都是从001开始-------
begin
for tin(select distinct n1 from aa where n2 is not null)loopdelete from bb;--二级插入临时表insert into bb(n) select distinct n2 from aa where n1=t.n1;--以行数补齐3位做idupdate bb set c=LPAD(rownum, 3, '0');--回填update aa set c2=(select c from bb where n=n2) where n1=t.n1;commit;end loop;
end;begin
for tin(select distinct n1||n2 n1 from aa where n3 is not null)loopdelete from bb;--三级插入临时表insert into bb(n) select distinct n3 from aa where n1||n2=t.n1;--以行数补齐3位做idupdate bb set c=LPAD(rownum, 3, '0');--回填update aa set c3=(select c from bb where n=n3) where n1||n2=t.n1;commit;end loop;
end;begin
for tin(select distinct n1||n2||n3 n1 from aa where n4 is not null)loopdelete from bb;--四级插入临时表insert into bb(n) select distinct n4 from aa where n1||n2||n3=t.n1;--以行数补齐3位做idupdate bb set c=LPAD(rownum, 3, '0');--回填update aa set c4=(select c from bb where n=n4) where n1||n2||n3=t.n1;commit;end loop;
end;
-----------方式2:区分下级节点顺序:即每个下级都是从001开始-------

三、不管是使用哪种方式处理的数据最后得到的数据都有自己的id。

e、Excel所有数据已全部入库,那就需要处理成树结构的形式,树结构的形式js代码如下

 {id:'001',pId:'-1',name:'新一代信息技术产业',allname:'新一代信息技术产业',"chkDisabled":true},{id:'001001',pId:'001',name:'下一代信息网络产业',allname:'新一代信息技术产业->下一代信息网络产业',"chkDisabled":true},{id:'001002',pId:'001',name:'电子核心产业',allname:'新一代信息技术产业->电子核心产业',"chkDisabled":true},{id:'001003',pId:'001',name:'人工智能',allname:'新一代信息技术产业->人工智能',"chkDisabled":true},{id:'001001001',pId:'001001',name:'网络设备制造',allname:'新一代信息技术产业->下一代信息网络产业->网络设备制造',"chkDisabled":false},{id:'001001002',pId:'001001',name:'新型计算机及信息终端设备制造',allname:'新一代信息技术产业->下一代信息网络产业->新型计算机及信息终端设备制造',"chkDisabled":false},{id:'001001003',pId:'001001',name:'信息安全设备制造',allname:'新一代信息技术产业->下一代信息网络产业->信息安全设备制造',"chkDisabled":false},

 特别注意一下:"chkDisabled":flase表示的是最后一个节点 是可选的,如果是true,那说明有下一级节点,本节点不可选。

这种形式的格式怎么生成,看下面的sql

---- 数据库操作完成后 要生成代码中识别的形式
select '{'||a||','||b||','||c||','||d||','||e||'},' from (
select distinct 'id:'||''''||c1||'''' a,'pId:'||''''||-1||'''' b,'name:'||''''||n1||'''' c,'allname:'||''''||n1||'''' d,'"chkDisabled":'||'true' e from aa 
union all
select distinct 'id:'||''''||c1||c2||'''' a,'pId:'||''''||c1||'''' b,'name:'||''''||n2||'''' c,'allname:'||''''||n1||'->'||n2||'''' d,'"chkDisabled":'||'true' e from aa 
union all
select distinct 'id:'||''''||c1||c2||c3||'''' a,'pId:'||''''||c1||c2||'''' b,'name:'||''''||n3||'''' c,'allname:'||''''||n1||'->'||n2||'->'||n3||'''' d,'"chkDisabled":'||'false' e from aa where n4 =''
union all
select distinct 'id:'||''''||c1||c2||c3||'''' a,'pId:'||''''||c1||c2||'''' b,'name:'||''''||n3||'''' c,'allname:'||''''||n1||'->'||n2||'->'||n3||'''' d,'"chkDisabled":'||'true' e from aa where n4 <>''
union all
select 'id:'||''''||c1||c2||c3||c4||'''' a,'pId:'||''''||c1||c2||c3||'''' b,'name:'||''''||n4||'''' c,'allname:'||''''||n1||'->'||n2||'->'||n3||'->'||n4||'''' d,'"chkDisabled":'||'false' e from aa where n4 <>''order by b,a )

 验证按照js中的形式来执行sql,sql中直接处理一对单引号括起来的值,在数据库中4个单引号才是一个单引号。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/448836.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于百度智能体开发爱情三十六计

基于百度智能体开发爱情三十六计 文章目录 基于百度智能体开发爱情三十六计1. 爱情三十六计智能体2. 三十六计开发创意3. 智能体开发实践3.1 基础配置3.2 进阶配置3.3 调优心得3.4可能会遇到的问题 4. 为什么选择文心智能体平台 1. 爱情三十六计智能体 爱情三十六计 是一款基于…

《计算机视觉》—— 基于PyCharm中的dlib库实现人脸关键点定位

文章目录 1. 安装必要的库2. 下载dlib的人脸检测器和关键点预测器模型3. 编写代码 人脸关键点定位是指通过计算机视觉技术&#xff0c;识别和定位人脸图像中的关键点&#xff0c;如眼睛、鼻子、嘴巴等特定位置。这些关键点的准确定位对于人脸识别、表情分析、姿态估计等应用具有…

分库分表方式介绍

分库分表方式 分库分表包括分库和分表两个部分&#xff0c;在生产中通常包括&#xff1a;垂直分库、水平分库、垂直分表、水平分表四种方式&#xff1b; 1、垂直分表 1.1 垂直分表定义 垂直分表就是在同一数据库内将一张表按照指定字段分成若干表&#xff0c;每张表仅存储其…

Unity中实现预制体自动巡逻与攻击敌人的完整实现指南

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

wireshark 解密浏览器https数据包

一、导出浏览器证书有两种方法 1、在浏览器快捷方式追加启动参数&#xff1a; --ssl-key-log-file"d:\log\2.log" C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chrome.exe --ssl-key-log-file"d:\log\2.log" 2、环境变量中新建用…

整理—计算机网络

目录 网络OSI模型和TCP/IP模型 应用层有哪些协议 HTTP报文有哪些部分 HTTP常用的状态码 Http 502和 504 的区别 HTTP层请求的类型有哪些&#xff1f; GET和POST的使用场景&#xff0c;有哪些区别&#xff1f; HTTP的长连接 HTTP默认的端口是什么&#xff1f; HTTP1.1怎…

win10卸载软件后发现“应用和功能”中还残留着软件卸载项怎么办?

win10卸载软件后发现“应用和功能”中还残留着软件卸载项怎么办&#xff1f; 1、方法一&#xff1a;2、方法二&#xff1a;3、在 Windows 中卸载或删除应用和程序 1、方法一&#xff1a; 点击控制面板界面中的程序下方的删除程序。 2、方法二&#xff1a; 1.winR打开运行窗…

JAVA——IO流

目录 1.概述 字节流&#xff1a; 2.分类 3.输入文件数据 1.创建对象 2.写出数据 3.释放资源 4.读出文件数据 1.创建对象 2.读取数据 3.释放资源 5.字符集 a.ASCII b.GBK c.Unicode 6.乱码 7.编码、解码常见方法 a.编码方法 1.默认方式编码 2.指定方式编码 …

4.7 大数据应用场景

文章目录 今天&#xff0c;我非常荣幸能与大家分享一个充满潜力和变革的主题——大数据的应用场景。在这个信息爆炸的时代&#xff0c;大数据已经成为推动各行各业发展的重要驱动力。接下来&#xff0c;我将带领大家探索大数据在不同行业中的神奇应用。 首先&#xff0c;让我们…

Wed前端入门——HTML、CSS

Wed前端入门——HTML、CSS 一般的页面有HTML、CSS以及JavaScript组成 HTML定义了页面的结构和内容&#xff0c;包括文本、图像、链接等等CSS用于定义页面的布局和样式JS用于添加交互性和动态功能作用 一、HTML 基本格式&#xff1a; <!-- 文档类型为HTML --> <!D…

大语言模型实战教程首发:基于深度学习的大规模自然语言处理模型LLM详解 -Shelly

我是Shelly&#xff0c;一个专注于输出AI工具和科技前沿内容的AI应用教练&#xff0c;体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具&#xff0c;拥抱AI时代的到来。 大模型的热度&#xff0c;实在是很高&#xff0c;诺奖也颁给了…

读书笔记《有效需求分析》业务场景梳理

1. 关键思考链 2. 执行流程 3. 执行细则 1&#xff09;最重要的是从业务流程到业务场景的梳理。 2&#xff09;主、变、支、管流程&#xff08;待解读&#xff09; 3&#xff09;排序业务场景&#xff08;待分析&#xff09; 4&#xff09;各分支判断是独立的且需要系统支持&a…

Vite创建Vue3项目以及Vue3相关基础知识

1.创建Vue3项目 1.运行创建项目命令 # 使用 npm npm create vitelatest2、填写项目名称 3、选择前端框架 4、选择语法类型 5、按提示运行代码 不出意外的话&#xff0c;运行之后应该会出现 下边这个页面 6.延伸学习&#xff1a;对比webpack和vite&#xff08;这个是面试必考…

JVM(HotSpot):直接内存及其使用建议

文章目录 一、什么是直接内存&#xff1f;二、特点三、使用案例四、直接内存的管理 一、什么是直接内存&#xff1f; Direct Memory&#xff1a;系统内存 普通IO&#xff0c;运行原理图 磁盘到系统内存&#xff0c;系统内存到jvm内存。 NIO&#xff0c;运行原理图 划分了一块…

Webpack 完整指南

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;Webpack篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来webpack篇专栏内容:webpack介绍 目录 介绍 一、webpack 1.1、webpack是什么 1.2 webpack五个核心配置 1.…

FreeRTOS——中断管理

中断理论剖析 中断简介 中断是一种机制&#xff0c;用于处理高优先级的事件或故障。当一个中断事件发生时&#xff0c;单片机可以立即中断正在执行的程序&#xff0c;转而处理中断事件。这种机制可以提高系统的响应速度和实时性。 中断优先级分组设置 ARM Cortex-M使用了8位宽…

它思科技CTO聂玮奇:消除“AI幻觉”,搭建高可靠对话云平台丨数据猿专访

大数据产业创新服务媒体 ——聚焦数据 改变商业 近年来&#xff0c;大模型技术在全球范围内引起了广泛关注和应用热潮。 提到人工智能&#xff0c;很多人会想到它强大的运算能力和广泛的应用场景。如今&#xff0c;语言模型的发展如火如荼&#xff0c;但其中的“幻觉”问题却带…

川字结构布局/国字结构布局

1.串字结构布局 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style&g…

S7-200 SMART 与 S7-1200 之间 TCP 通信— S7-200 SMART 作为服务器

TCP 协议通信 TCP 通信为面向连接的通信&#xff0c;需要双方都调用指令以建立连接及交换数据。S7-200 SMART 与 S7-1200 通过 TCP 通信&#xff0c;在 S7-1200 调用 T-block 指令 ( TCON, TDISCON, TSEND, TRCV ) &#xff0c;在 S7-200 SMART 调用 Open User Communication …

网络爬虫-数美滑块验证码

仅供研究学习使用。 今天带来的是数美滑块验证码的逆向 目标站 --> 传送门 解决此类验证码 首先要解决滑动距离的判定 无论是使用selenium还是使用协议的方式来破解 都绕不开滑动距离的识别 滑动距离可以参考以前我博客上的方式&#xff0c;或者找一找开源的一些算法&am…