gpt4 book ai didi

mysql - 将mySQL数据结构转移到新的关系数据库中(与关系表以逗号分隔)

转载 作者:行者123 更新时间:2023-11-29 21:44:16 25 4
gpt4 key购买 nike

我有几个 mySQL 表,其中保存了以逗号分隔的子表的关系 ID。现在我必须将这些条目传输到一个新表中,其中每个关系都有一个条目。

是否有一种简单的方法可以将导入查询转换为正确的格式?

这里是数据示例,我的旧表 (cat_projects) 包含我想要转换的以下条目:

-- export of table cat_projects
INSERT INTO `cat_projects` (`id`, `authors`) VALUES
(2, '4,1'),
(3, '0'),
(4, '8,4,1'),
(5, '13,12'),
(10, '19,4,1'),
(13, ''),
(14, ''),
(15, '28,27,25,12,9,1');

我只想将此条目写入新的关系表 (cat_project_relation)。 att_id 链接到另一个表,我在其中保存了旧 authors 列的设置:

-- att_id = 58 
-- item_id = id
-- value_sorting = counting from 0 for each item_id
-- value_id = for each relation one entry value
INSERT INTO `cat_project_relation` (`att_id`, `item_id`, `value_sorting`, `value_id`) VALUES
(58, 2, 0, '4'),
(58, 2, 1, '1'),
(58, 3, 0, '0'),
(58, 4, 0, '8'),
(58, 4, 1, '4'),
(58, 4, 2, '1'),
(58, 5, 0, '13'),
(58, 5, 1, '12'),
(58, 10, 0, '19'),
(58, 10, 1, '4'),
(58, 10, 2, '1'),
(58, 13, 0, ''),
(58, 14, 0, ''),
(58, 15, 0, '28'),
(58, 15, 1, '27'),
(58, 15, 2, '25'),
(58, 15, 3, '12'),
(58, 15, 4, '9'),
(58, 15, 5, '1');

我希望我想要实现的目标很清楚。是否可以直接在 SQL 中执行此操作,还是必须应用外部 bash 脚本?

最佳答案

实际上,编写一个 bash 脚本并不像我想象的那么困难。我想它是比用 SQL 编程更简单的解决方案。

#!/bin/bash

# input table
table="(2, '4,1'),
(3, '0'),
(4, '8,4,1'),
(5, '13,12'),
(10, '19,4,1'),
(13, ''),
(14, ''),
(15, '28,27,25,12,9,1');"

# fixed attribute id
att_id=58

# read each line into an array
readarray -t y <<<"$table"

# for each array item (each line)
for (( i=0; i<${#y[*]}; i=i+1 ))
do
z=${y[$i]}
# split by comma into array
IFS=', ' read -r -a array <<< "$z"
# loop through each value
for (( j=0; j<${#array[*]}; j=j+1 ))
do
# remove all other characters then number
nr=$(echo ${array[$j]} | sed 's/[^0-9]*//g')
# each first value is the item_id
if [ $j -eq 0 ]
then
item_id=$nr
else
k=$(expr $j - 1)
value_id=$nr
# print output line by line
echo "($att_id, $item_id, $k, '$value_id')," >> output.txt
fi
done
done

结果将如问题中所询问的那样。

关于mysql - 将mySQL数据结构转移到新的关系数据库中(与关系表以逗号分隔),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34229566/

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