-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathclasses.pl
58 lines (41 loc) · 1.33 KB
/
classes.pl
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#!/usr/bin/perl -w
# Internal Class ID,Class ID,Description,Meeting Times
my @inputFiles = ('ClassCalSync_Classes.csv');
# Database
$DBSVR = 'localhost';
$DBNAME = 'classCalSync';
$DBUSER = '**username**';
$DBPASS = '**password**';
$DBTABLE = 'curClasses';
use HTML::Entities qw(decode_entities);
use utf8;
use Text::CSV;
my $csvIn = Text::CSV_XS->new ( { sep_char => ',' } );
#Prepare use of SQL database
use DBI;
my $dsn = "DBI:mysql:$DBNAME:$DBSVR";
my $dbh = DBI->connect($dsn, $DBUSER, $DBPASS) or die ("Cannot connect");
$dbh->do("TRUNCATE TABLE $DBTABLE");
#Insert data into database
$insert = $dbh->prepare("INSERT into $DBTABLE (ID, Class) values (?, ?)");
foreach $inputFile (@inputFiles)
{
open( my $readRows, '<:encoding(utf-8)', $inputFile)
or die "Could not open $inputFile: $!\n";
while (my $line = <$readRows>)
{
chomp $line;
if ($csvIn->parse($line))
{
my ($intClassID, $classID, $desc, $meeting) = $csvIn->fields();
next if ($intClassID =~ m/Internal Class ID/);
$desc = decode_entities($desc);
if ($meeting =~ m/US-\w-US-(\d)/) { $desc = $1 . " | " . $desc; }
elsif ($meeting =~ m/\-[MU]S-([^L-]*)L?$/) { $desc = $1 . " | " . $desc; }
$insert->execute($intClassID, $desc);
}
else { warn "Line could not be parsed: $line\n"; }
}
}
$insert->finish();
exit;