我在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/

10-11 15:37