用Perl进行数据加工处理
最近项目需要用Perl对文本数据进行加工处理,再一次Perl的高效快捷让我爱不释手。平时我们习惯用SQL文进行数据的增删查改处理,在没有DB的情况下,配上恰当的算法,Perl的
文件处理能力同样能够写出同SQL一样高效的小程序。
【条件过滤】
将条件参数放入文本中,Perl逐行读该文件,在以key/value的形式存入hash。
打开需要过滤的文件,perl逐行读该文件,取出条件项目字段,判断该字段是否在hash中存在,
如果存在,将本行数据写入过滤后的文本中。
【Interface数据作成】
如果数据仓库在A系统中,一般A系统将会向下流N个系统
以文件数据的形式提供Interface。从格式上讲:Interface文件一般根据“固定/可变,编码,分隔符,双引号”的
不同而不同;从内容上讲则有全件与差分的区别。下流系统全件数据更新时:会删除当前所以旧数据,再将本
次文件中所以记录追加到相应表中;下流系统差分数据更新时:会根据提供数据记录的“删除,变更,追加”区
分对相应的表做处理。全件数据一般用一条SQL可将执行结果导到文件中。而差分数据则需要本次全件数据
同上次数据逐行进行比较,进而将不同的数据(删除、添加、更新)输出到差分文件中。
本次项目的差分数据作成算法非常巧妙,值得留下记录。
假设A文件为上次全件数据,B文件为本次全件数据。
①.A文件和B文件,按照差分比较用主键进行升序排序。
②.取A文件和B文件第一行
③.当A和B文件都处理完成时终止循环
・A文件第一行=B文件第一行
⇒过滤,依次读A和B文件下一行
・A文件第一行≠B文件第一行 && A文件主键 = B文件主键
⇒将B文件的这条数据以更新区分的形式输出到差分文件中,A和B文件依次读取下一行
・A文件第一行≠B文件第一行 && A文件主键 > B文件主键
⇒将B文件的这条数据以追加区分的形式输出到差分文件中,B文件读取下一行
・A文件第一行≠B文件第一行 && A文件主键 < B文件主键
⇒将A文件的这条数据以删除区分的形式输出到差分文件中,A文件读取下一行
未完待续
页:
[1]