Home: Perl Programming Help: Advanced:
smart csv perl library



sardare
New User

Mar 3, 2009, 8:18 AM


Views: 1738
smart csv perl library

Hi,
I am a data analyst.
I am reading a csv file. Each column in the csv file has a mapping to data based on the column name. e.g.
if csv file is something like:
key, column_b,column_c,column_d,..

then there is a mapping from column_a to a meaningful name coming from another file:
column_a,meaningful_column_a
same for column_b, etc..

I need a CSVReader that can be initialized with the mapping files and then be asked to read the csv file, the translation should happen behind the scenes and it should return me mapped column fields.

e.g. usage.


Code
my $csvReader =  new CSVReader(); 
$csvReader->initializeMappings(@mapping_files);
$csvReader->read($csv_file);
while($csvReader->hasNext()) {
my @columns = $csvReader->readNext();
}


Is there a library out there that does this smartly and can also take in configuration file specifying how to map column names. If it has other cool features that would be cool too.

thanks!

Matt


(This post was edited by sardare on Mar 3, 2009, 8:19 AM)


1arryb
User

Mar 4, 2009, 8:34 AM


Views: 1723
Re: [sardare] smart csv perl library

Hi sardare,

I don't think you're going to find a pre-built module for this.

If I understand you correctly, you are looking for a module that:

1. Is initialized with a mapping of csv columns to more "meaningful" values.
1. Steps through a file using stream-like semantics.
2. Maps the columns of each record read to the "meaningful" value.

Tell me, is the mapping by:

1. Column position (e.g., csv column 0 always returns 'foo', regardless of value);
2. Column value (e.g., csv value 'foo' returns 'bar', regardless of postition); or
3. A combination of the two (value 'foo' returns 'bar' if it appears in colunn 1 but might return 'duck' if it appears in column 2)?

Cheers,

Larry