我在MySQL中有一个表
id | parameters
1 gender=male;location=london;age=32
2 gender=female;location=manchester
3 speaks=french/english;gender=male
我想将它加载到一个表中,表中有3列分隔参数,但保留id,例如,我知道如何做到这一点,可以使用什么方法。别忘了这里有上百万的行所以不能太慢。
谢谢
id | key | value
1 gender male
1 location london
1 age 32
2 gender female
2 location manchester
3 speaks french/english
3 gender male
最佳答案
您可以编写一个小脚本来创建输入csv提要文件。像这样的事情-
awk '
BEGIN {
print "id,key,value"
}
NR>1 {
j=1
split ($2, a, ";")
for (i=1; i<=length(a); i++) {
split (a[i], b, "=")
printf "%s,%s,%s\n",NR-1,b[j],b[j+1]
}
}' file
测试:
[jaypal:~/Temp] cat file
id | parameters
1 gender=male;location=london;age=32
2 gender=female;location=manchester
3 speaks=french/english;gender=male
[jaypal:~/Temp] awk '
BEGIN {
print "id,key,value"
}
NR>1 {
j=1
split ($2, a, ";")
for (i=1; i<=length(a); i++) {
split (a[i], b, "=")
printf "%s,%s,%s\n",NR-1,b[j],b[j+1]
}
}' file
id,key,value
1,gender,male
1,location,london
1,age,32
2,gender,female
2,location,manchester
3,speaks,french/english
3,gender,male
关于mysql - MySQL和Bash爆炸结果并重新加载到MySQL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16777159/