#!/usr/bin/perl use strict; use warnings; use DBI; # Vars for db my $dbfile; my $dsn; my $user; my $password; my $dbh; my $dbInfo = []; # Vars to hold input file data my $newUsers= []; my $usrs; # $filename is the name of the input file my $filename = "in_userIDandName.csv"; # Counters for summary report my $recsIn = 0; my $recsUpdated = 0; my $recsNotUpdated = 0; # Below are the fields in the users table. my $userID; my $userName; my $comment; ############################################################ main(@ARGV); ############################################################ ############################################################ # ############################################################ sub main { message("\n *** script start ***\n"); getUserIDandName(); db_init(); db_updateRecords(); db_close(); message("\n *** script ended ***\n"); } ############################################################ # ############################################################ sub getUserIDandName { my $userIDs = []; open (FH, $filename); while (my $line = ) { $recsIn++; chop($line); message ("lineIn = $line"); my @values = split(',', $line); chop($values[1]); push @$userIDs, { userID=>"$values[0]" , userName=>"$values[1]" }; } $newUsers = $userIDs; } ############################################################ # ############################################################ sub db_init { $dbfile = "user.db"; $dsn = "dbi:SQLite:dbname=$dbfile"; $user = ""; $password = ""; $dbh = DBI->connect($dsn, $user, $password, { PrintError => 0, RaiseError => 1, AutoCommit => 1, FetchHashKeyName => 'NAME_lc', }); if (!$dbh) { print STDERR "Can't connect to database.\n"; exit (1); } else { print "Connected!\n\n"; } } ############################################################ # ############################################################ sub db_updateRecords { foreach $usrs (@$newUsers) { # message("updating userID = .$usrs->{userID}. and name = .$usrs->{userName}.. "); my $rv = $dbh->do('UPDATE users SET userName = ? Where userID = ?' , undef , $usrs->{userName} , $usrs->{userID} ); # message(" return value = $rv"); if ( $rv == 1 ) { $recsUpdated++; } else { $recsNotUpdated++; } } } ############################################################## # ############################################################ sub message { my $m = shift or return; print("$m\n"); } ############################################################ # ############################################################ sub db_close { message("-----------------------------------------------"); message("Number of records in = $recsIn"); message("Number of records Updated to users = $recsUpdated"); message("Number of records NOT Updated to users = $recsNotUpdated"); message("-----------------------------------------------"); $dbh->disconnect; }