gpt4 book ai didi

mysql - 从 CSV 文件获取特定输入的 B 树

转载 作者:行者123 更新时间:2023-11-29 00:22:26 25 4
gpt4 key购买 nike

我有一个包含以下内容的 CSV 文件

100001,0,top
100002,100001,left
100003,100001,middle
100004,100001,right
100005,100002,left
100006,100002,right
100007,100002,middle
100008,100003,left
100013,100003,right
100011,100003,middle
100014,100003,left
100025,100003,right
100020,100003,middle

说第一个字段是memberID,第二个是memberof(指上面某些记录的同一文件的memberID)和第三个位置,即左或中或右这就像 B-tree Raw data 100001 在上面有它的左中和右分支

我的预期输出是

level1
100001(parent),100002,100004,100003

level2
100002(parent),100005,100006,100007
100004(parent),100014,100025,100029
100003(parent),100009,100013,100011

level4
......

输入文件中可以有超过 100 条记录,因此如果从顶部开始搜索,可以有 5 个以上的级别。

输出应该是低于输入值的层次结构成员。 (比如说如果我给 100003 它应该给它下面的成员而不是上面的)

我尝试在 mysql 中插入并尝试递归查询它变得更加复杂和耗时。

我相信 awksed 命令可以提供帮助,但我没有太多动手实践。

我正在寻找一些可以实现此目的的 awksed 命令或 bash 或 shell 脚本。

这就像先进行二分查找,然后从输入中获取 B 树。

为了更好地理解,请查看图表(对于每个成员,将有左中右,但在直接下一级不超过 3 个成员)

我使用 mysql 的失败尝试代码 1

#!/bin/bash

input=$1;

left='';
middle='';
right='';
level=0
function getchild () {

left=$(mysql -uroot -p"passwd" -Ddbname -s -N -e "select mid from mtree where pid=$1 and pos='left'");
middle=$(mysql -uroot -p"passwd" -Ddbname -s -N -e "select mid from mtree where pid=$1 and pos='middle'");
right=$(mysql -uroot -p"passwd" -Ddbname -s -N -e "select mid from btree where pid=$1 and pos='right'");
#level=$(($level+1));
#return $level;

}

getchild $input;
echo "$input,$left,$middle,$right"

我用 grep 的失败代码 2

#!/bin/bash

input=$1;

left='';
middle='';
right='';
level=0
function getchild () {

left=$(grep ",$1,left" filename);
middle=$(grep ",$1,middle" filename);
right=$(grep ",$1,right" filename);

}

getchild $input;
echo "$input,$left,$middle,$right"

现在我很想知道如何获得每个左中和右的子级别(递归直到没有元素向下)

diagram

提前致谢

最佳答案

你可以从这里开始:

 awk -F , '{a[$2]=a[$2]==""?$1:a[$2] FS $1}END{for (i in a) print i,"(parent),",a[i]}' infile.csv

结果:

0 (parent), 100001
100001 (parent), 100002,100003,100004
100002 (parent), 100005,100006,100007
100003 (parent), 100008,100013,100011,100014,100025,100020

关于mysql - 从 CSV 文件获取特定输入的 B 树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20625085/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com