日期:2014-05-16  浏览次数:20626 次

求救,大文本文件要高效的插入到数据库?
一个500M左右的txt文件,每行格式相同(key一样,value不同),如下:
key1=value1&key2=value2&key3=value3……大概20个这种参数

mysql数据库只需要前5个参数的值。表我就建好了5个字段了。

试了一下mysql命令行的:
load data local infile "E:/data.txt" into table zzz files terminated by '&' lines terminated by '\r\n'

这样花了50分钟。而且5个字段的数据是 key1=value1, key2=value2,……还需要单独去掉key,只保留值。

后来我的思路是先生成一个只包含前5个字段的txt,再用mysql的load data加载进去。

朋友教了我一个办法:
cat test_data.txt | awk -F'&' '{for(i=1;i<=5;i++){split($i,v,"="); printf v[2];if(i==5)printf "\n";else printf "&"}}' > result_data.txt

这样生成的txt就是干干净净的5列数据了,但是这个命令都耗时了50秒。

听说sed会快些,请教大家sed怎么写了。或者有其他什么更快的办法。



------解决方案--------------------
你这样试试
awk -F"=|&" 'BEGIN{OFS="&"} {print $2, $4, $6, $8, $10}' test_data.txt > result_data.txt