至亲爱的博友:
大家好,好久不见了。由于博主还是一名大学在校生,不可避免的需要和指导教师共同完成一些项目,因此前一段时间暂时停止了博客的更新。既然回归博客,那我们就闲话少说直接进入正题。
在平日的项目中,大家有没有遇到过这样的经历:由于项目要求,我们需要处理一批超大数据(通常20GB以上)。但是客户提供的数据格式既不便于直接处理,也不适合输入常用的数据处理软件。这时大家一般是怎样做的呢?类似问题前一段时间就将博主折磨的痛不欲生。
如果大家和博主的遭遇类似,请认真阅读本博代码并好好利用。
说到数据处理,当前最常规的方法就是导入数据库进行处理。但是问题的关键是客户提供的数据格式并不适合常用数据库的输入。
例如:
用户提供数据格式:
101010100=北京
101010200=海淀101010300=朝阳101010400=顺义101010500=怀柔101010600=通州101010700=昌平101010800=延庆101010900=丰台101011000=石景山101011100=大兴101011200=房山101011300=密云101011400=门头沟101011500=平谷101011600=八达岭101011700=佛爷顶101011800=汤河口101011900=密云上甸子101012000=斋堂101012100=霞云岭对待这样的数据格式我们该怎么办呢?
博主曾经多次使用Xml文件格式进行数据库创建,更新和读出。下面介绍一段代码(C语言)将上面数据格式导成类似Xml文件的数据格式。
输出文件格式.txt,内容形式:
101010100 北京 101010200 海淀 101010300 朝阳 101010400 顺义 101010500 怀柔 101010600 通州 101010700 昌平 101010800 延庆 101010900 丰台 101011000 石景山 101011100 大兴 101011200 房山 101011300 密云 101011400 门头沟 101011500 平谷 101011600 八达岭 101011700 佛爷顶 101011800 汤河口 101011900 密云上甸子 101012000 斋堂 101012100 霞云岭
代码如下:
#includeint main(){ FILE *fin,*fout; fin = fopen("input.txt","r"); fout = fopen("output.txt","w"); char x; while (fscanf(fin,"%c",&x) == 1) { if (x == '\n') { fprintf(fout," "); } else if(x == '=') { fprintf(fout," "); } else { fprintf(fout,"%c",x); } } fclose(fin); fclose(fout); printf("end\n"); return 0;}
得到output文件后仅需少量处理就可以得到优质的Xml文件了,接下来运用数据库所有的问题都将迎刃而解。
2013/6/23