至亲爱的博友:
大家好,好久不见了。由于博主还是一名大学在校生,不可避免的需要和指导教师共同完成一些项目,因此前一段时间暂时停止了博客的更新。既然回归博客,那我们就闲话少说直接进入正题。
在平日的项目中,大家有没有遇到过这样的经历:由于项目要求,我们需要处理一批超大数据(通常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,内容形式:
< city >< cityid >101010100</ cityid >< cityname >北京</ cityname ></ city >< city >< cityid >101010200</ cityid >< cityname >海淀</ cityname ></ city >
< city >< cityid >101010300</ cityid >< cityname >朝阳</ cityname ></ city >< city >< cityid >101010400</ cityid >< cityname >顺义</ cityname ></ city >
< city >< cityid >101010500</ cityid >< cityname >怀柔</ cityname ></ city >< city >< cityid >101010600</ cityid >< cityname >通州</ cityname ></ city >
< city >< cityid >101010700</ cityid >< cityname >昌平</ cityname ></ city >< city >< cityid >101010800</ cityid >< cityname >延庆</ cityname ></ city >
< city >< cityid >101010900</ cityid >< cityname >丰台</ cityname ></ city >< city >< cityid >101011000</ cityid >< cityname >石景山</ cityname ></ city >
< city >< cityid >101011100</ cityid >< cityname >大兴</ cityname ></ city >< city >< cityid >101011200</ cityid >< cityname >房山</ cityname ></ city >
< city >< cityid >101011300</ cityid >< cityname >密云</ cityname ></ city >< city >< cityid >101011400</ cityid >< cityname >门头沟</ cityname ></ city >
< city >< cityid >101011500</ cityid >< cityname >平谷</ cityname ></ city >< city >< cityid >101011600</ cityid >< cityname >八达岭</ cityname ></ city >
< city >< cityid >101011700</ cityid >< cityname >佛爷顶</ cityname ></ city >< city >< cityid >101011800</ cityid >< cityname >汤河口</ cityname ></ city >
< city >< cityid >101011900</ cityid >< cityname >密云上甸子</ cityname ></ city >< city >< cityid >101012000</ cityid >< cityname >斋堂</ cityname ></ city >
< city >< cityid >101012100</ cityid >< cityname >霞云岭</ cityname ></ city >
|
代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
#include<stdio.h> int 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, "</cityname></city><city><cityid>" );
}
else if (x == '=' )
{
fprintf (fout, "</cityid><cityname>" );
}
else
{
fprintf (fout, "%c" ,x);
}
}
fclose (fin);
fclose (fout);
printf ( "end\n" );
return 0;
} |
得到output文件后仅需少量处理就可以得到优质的Xml文件了,接下来运用数据库所有的问题都将迎刃而解。