#!/usr/bin/perl use strict; use warnings; use Text::CSV; use DBI; defined($ARGV[0]) or die "Please supply a filename as first argument."; my $infile = $ARGV[0]; my $csv = Text::CSV->new(); open (CSV, "<", $infile) or die $!; my $dsn = 'DBI:mysql:cacti:localhost'; my $db_user_name = 'DBUSER'; my $db_password = 'DBPASS'; my $dbh = DBI->connect($dsn, $db_user_name, $db_password); print "INSERT INTO `host_snmp_query` VALUES\n"; while () { if ($csv->parse($_)) { my @columns = $csv->fields(); my $description = sprintf("%s--%s", $columns[0], $columns[1]); my $host_id = getID($description); printf("('%d', 1, 'ifDescr', '|query_ifDescr|', 1),\n", $host_id); } else { my $err = $csv->error_input; print "Failed to parse line: $err"; } } close CSV; sub getID { my $descr = shift; my $sth = $dbh->prepare('SELECT id FROM host WHERE description = ?') or die "Couldn't prepare statement: " . $dbh->errstr; $sth->execute($descr) or die "Couldn't execute statement: " . $sth->errstr; if(my $id = $sth->fetchrow()) { return $id; } else { return -1; } };