#!/usr/bin/perl
use strict;
use warnings;
use Date::Calc 'Day_of_Week';
use DBI;
my %holiday = (
'19990101' => 'NEW YEARS',
'20000101' => 'NEW YEARS',
'20010101' => 'NEW YEARS',
'20020101' => 'NEW YEARS',
'20030101' => 'NEW YEARS',
'20040101' => 'NEW YEARS',
'19990118' => 'MLK BDAY',
'20000117' => 'MLK BDAY',
'20010115' => 'MLK BDAY',
'20020121' => 'MLK BDAY',
'20030120' => 'MLK BDAY',
'20040119' => 'MLK BDAY',
'19990214' => 'VALENTINES DAY',
'20000214' => 'VALENTINES DAY',
'20010214' => 'VALENTINES DAY',
'20020214' => 'VALENTINES DAY',
'20030214' => 'VALENTINES DAY',
'20040214' => 'VALENTINES DAY',
'19990215' => 'WASHINGTONS BDAY',
'20000221' => 'WASHINGTONS BDAY',
'20010219' => 'WASHINGTONS BDAY',
'20020218' => 'WASHINGTONS BDAY',
'20030217' => 'WASHINGTONS BDAY',
'20040216' => 'WASHINGTONS BDAY',
'19990531' => 'MEMORIAL DAY',
'20000529' => 'MEMORIAL DAY',
'20010528' => 'MEMORIAL DAY',
'20020527' => 'MEMORIAL DAY',
'20030526' => 'MEMORIAL DAY',
'20040531' => 'MEMORIAL DAY',
'19990704' => 'INDEPENDENCE DAY',
'19990705' => 'INDEPENDENCE DAY (OBSERVED)',
'20000704' => 'INDEPENDENCE DAY',
'20010704' => 'INDEPENDENCE DAY',
'20020704' => 'INDEPENDENCE DAY',
'20030704' => 'INDEPENDENCE DAY',
'20040704' => 'INDEPENDENCE DAY',
'20040705' => 'INDEPENDENCE DAY (OBSERVED)',
'19990906' => 'LABOR DAY',
'20000904' => 'LABOR DAY',
'20010903' => 'LABOR DAY',
'20020902' => 'LABOR DAY',
'20030901' => 'LABOR DAY',
'20040906' => 'LABOR DAY',
'19991011' => 'COLUMBUS DAY',
'20001009' => 'COLUMBUS DAY',
'20011008' => 'COLUMBUS DAY',
'20021014' => 'COLUMBUS DAY',
'20031013' => 'COLUMBUS DAY',
'20041011' => 'COLUMBUS DAY',
'19991111' => 'VETERANS DAY',
'20001110' => 'VETERANS DAY (OBSERVED)',
'20001111' => 'VETERANS DAY',
'20011111' => 'VETERANS DAY',
'20011112' => 'VETERANS DAY (OBSERVED)',
'20021111' => 'VETERANS DAY',
'20031111' => 'VETERANS DAY',
'20041111' => 'VETERANS DAY',
'19991125' => 'THANKSGIVING DAY',
'20001123' => 'THANKSGIVING DAY',
'20011122' => 'THANKSGIVING DAY',
'20021128' => 'THANKSGIVING DAY',
'20031127' => 'THANKSGIVING DAY',
'20041125' => 'THANKSGIVING DAY',
'19991224' => 'CHRISTMAS EVE',
'20001224' => 'CHRISTMAS EVE',
'20011224' => 'CHRISTMAS EVE',
'20021224' => 'CHRISTMAS EVE',
'20031224' => 'CHRISTMAS EVE',
'20041224' => 'CHRISTMAS EVE',
'19991225' => 'CHRISTMAS DAY',
'20001225' => 'CHRISTMAS DAY',
'20011225' => 'CHRISTMAS DAY',
'20021225' => 'CHRISTMAS DAY',
'20031225' => 'CHRISTMAS DAY',
'20041225' => 'CHRISTMAS DAY',
'19991231' => 'NEW YEARS EVE',
'20001231' => 'NEW YEARS EVE',
'20011231' => 'NEW YEARS EVE',
'20021231' => 'NEW YEARS EVE',
'20031231' => 'NEW YEARS EVE',
'20041231' => 'NEW YEARS EVE',
);
my $xml = $ARGV[0] || 'pm.xml';
open ( INPUT , '<' , $xml ) or die "Unable to open $xml for reading : $!";
my $tab = $ARGV[1] || 'pm.tab';
open ( OUTPUT , '>' , $tab ) or die "Unable to open $tab for writing : $!";
select OUTPUT;
while ( ) {
last if /^ $srt");
my $sql = $ARGV[3] || 'COPYSQL';
open ( INPUT , '<' , $srt ) or die "Unable to open $srt for reading : $!";
open ( OUTPUT , '>' , $sql ) or die "Unable to open $sql for writing : $!";
select OUTPUT;
my %node;
while ( ) {
my @field = split /\t/;
my $id = shift @field;
die "NOT 8 FIELDS\n" if @field != 8;
if ( $field[4] eq 'note' ) {
if ( $node{ $field[5] } ) {
$field[4] = $node{ $field[5] };
}
else {
$field[4] = 'Poll';
$field[5] ||= '1';
}
}
else {
$node{ $id } = $field[4];
}
$_ ||= '' for @field;
print join "\t" , @field;
}
close INPUT;
close OUTPUT;
my $db = 'pmstats.db';
my $dbh = DBI->connect("dbi:SQLite:dbname=$db", { AutoCommit => 0 }) or die $DBI::errstr;
$dbh->do(
"CREATE TABLE nodes (year, month, day, hour, type, root, dow, holiday)"
) or die $dbh->errstr;
$dbh->do("COPY nodes FROM $sql") or die $dbh->errstr;
$dbh->disconnect;