2

現在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
4

1 に答える 1

2

小さなスクリプトを記述して、入力 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
于 2013-05-27T17:25:00.197 に答える