如何快速将抓取的文本数据转换为数据库表格,附带树形结构快速实现

公司要求一天内将从汽车网抓取的文本格式汽车品牌款式类型数据整合到项目中。作者使用Navicat将文本数据导入数据库,进行品牌分组去重并添加标识,还介绍了让款式关联品牌、类型关联款式的操作,分享了修改语句时遇到的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

记录一次日常操作

业务场景: 公司在某汽车网抓取来汽车品牌款式类型数据,给我的是文本格式(而且是树形结构 品牌关联款式 款式关联类型),让我在一天之内整合到公司项目中。起初一脸盲然,这咋整,光品牌就313种,某的办法,就开干了。

首先文本需要是这种格式的
		Z	众泰	众泰E200	微型车
		Z	众泰	众泰ES330	微型车
		Z	众泰	众泰Z100	微型车
		Z	中华	中华豚	微型车
		Z	知豆	知豆D2	微型车
		Z	知豆	知豆D3	微型车
		Z	知豆	知豆	微型车
		A	奥迪	奥迪A0	微型车
		A	阿斯顿·马丁	Cygnet	微型车
		A	ARCFOX	ARCFOX-1	微型车
		B	本田	Brio	微型车
		B	本田	Gear	微型车
		B	本田	N BOX	微型车
		B	本田	N ONE	微型车
		B	本田	本田e	微型车
		B	本田	本田Urban EV	微型车
		B	比亚迪	比亚迪e1	微型车
		B	比亚迪	比亚迪F0	微型车
		B	比亚迪	福莱尔	微型车
		B	宝骏	宝骏E100	微型车
		B	宝骏	宝骏E200	微型车

接下来说正事
楼主用的数据库工具是Navicat,其他的工具不知道,应该都支持文本导入。咳咳
先将文本数据导入数据库
如何将文本数据导入数据库

然后捋顺头绪,品牌关联款式 款式关联类型 那品牌肯定是最大的喽(那品牌就是爷爷,款式是爸爸,类型是儿子) ,ok 接下来品牌分组去重

DELETE
FROM
	表名
WHERE
	f_id IN (
		SELECT
			dv.id
		FROM
			(
				SELECT
					MAX(tbcd2.f_id) AS id
				FROM
					表名 tbcd2
				GROUP BY
					tbcd2.f_id
			) dv
	)
	为什么要在中间边再查一次呢,mysql有修改的语句不能直接根据中间表操作,据说oracle不会有此错误

品牌这个爷爷去玩重就该给个爷爷标识了,这个大家应该明白吧,就是给个pid。ok

UPDATE 表名 tbcd
SET tbcd.f_pid =- 1
WHERE
	tbcd.f_id  !=  0

哦,原来这么简单 ,需要注意的是建议修改前的每一步先备份一份表格数据,毕竟数据库操作不可逆吗。
接下来爸爸找爷爷,此处需要多建了一个品牌备用字段例如 f_brand2 , 这样我们返回第一步再重新导入这个表,相同的数据全部倒进去, 不同的是品牌导入f_brand2。
然后重点来了,修改语句要怎么写电脑才能明白让爸爸找爷爷修改好pid呢。lz在这里有点卡壳,所以写出来给大家分享下经验,要是有更好的办法可以联系楼主。

update 表名1 tbcd3,表名2 tbcd4 set tbcd4.f_pid = tbcd3.f_id
where 
tbcd3.f_brand = tbcd4.f_brand2
and tbcd4.f_pid != -1
表名1  和 表名2 是同一张表这个应该能理解吧,咳咳。

接下来 儿子找爸爸也是相同的操作,不同的是通过款式 咳咳。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值