我有一个包含 7 列(chr
, pos
, num
, iA
, iB
, iC
, iD
)的 MySQL 数据库和一个包含 4000 万行的文件,每行都包含一个数据集。每行有 4 个制表符分隔的列,而前三列始终包含数据,第四列最多可以包含三个不同key=value
的对,用分号分隔
chr pos num info
1 10203 3 iA=0.34;iB=nerv;iC=45;iD=dskf12586
1 10203 4 iA=0.44;iC=45;iD=dsf12586;iB=nerv
1 10203 5
1 10213 1 iB=nerv;iC=49;iA=0.14;iD=dskf12586
1 10213 2 iA=0.34;iB=nerv;iD=cap1486
1 10225 1 iD=dscf12586
列 info 中的 key=value 对没有特定的顺序。我也不确定一个键是否可以出现两次(我希望不会)。
我想将数据写入数据库。前三列没有问题,但是从信息列中提取值让我感到困惑,因为键=值对是无序的,并不是每个键都必须在行中。对于一个类似的数据集(带有有序的信息列),我使用了一个与正则表达式相关的 java-Programm,它允许我(1)检查和(2)提取数据,但现在我陷入了困境。
我怎样才能解决这个任务,最好是使用 bash 脚本或直接在 MySQL 中?