use DBI; use Data::Dump 'pp'; my $dbh = DBI->connect($dbdsn, $dbuserid, $dbpassword, {RaiseError => 1,PrintError => 1}) or die "Connection Error: $DBI::errstr\n"; # users my $sql_u = 'SELECT id from users'; my $dbUsers = $dbh->selectall_hashref($sql_u,'id'); print "Users\n"; pp $dbUsers; # regions my $sql_r = 'SELECT id,name FROM regions'; my $regions = $dbh->selectall_hashref($sql_r,'name'); print "Regions\n"; pp $regions; # prepare insert sql my $sql_i = "INSERT INTO users (id, name, displayname, regionid) VALUES (?,?,?,?)"; my $sth_i = $dbh->prepare($sql_i); for my $uid (keys %$ldapUsers) { # check if user not exists in db if (! exists $dbUsers->{$uid}){ my $ldap = $ldapUsers->{$uid}; my @f = ($uid); $f[1] = $ldap->{'name'}; $f[2] = $ldap->{'displayName'}; $f[3] = $regions->{$ldap->{'defaulteRegion'}}{'id'}; # uncomment the execute after testing #$sth_i->execute(@f); print "Insert record : ".(join " | ",@f,"\n"); } }