Alright, I'm not going to say that it's finished but it's a lot better than it was...
foreach (<>) {
my ($item_id, $upc) = split(",",$_);
my $status = upsert($dbh, $table, $item_id, $upc);
print "Item #: $item_id, UPC: $upc, Status: $status\n";
}
sub upsert {
my ($rows, $rows2, $status);
my $true = "0E0";
my ($dbh, $table, $item_id, $upc) = @_;
my $sth = $dbh->prepare("UPDATE $table SET upc=? WHERE item_id=?;")
+or die $dbh->errstr;
my $sth2 = $dbh->prepare("INSERT INTO $table (item_id, upc) VALUES(?
+, ?);") or die $dbh->errstr;
$sth->execute($upc, $item_id);
$rows = $sth->rows;
($rows == 0) ? $true : $rows; # from DBI pod (using variable instea
+d of "0E0")
print "rows is $rows\n" if ($DEBUG);
if ($rows < 1) {
print "Didn't update so trying to insert...\n" if ($DEBUG);
$sth2->execute($item_id, $upc);
$rows = $sth2->rows;
($rows == 0) ? $true : $rows;
print "rows is $rows\n" if ($DEBUG);
if ($rows < 1) {
print "Didn't insert so giving up...\n" if ($DEBUG);
}else{
$status = "Inserted";
}
}else{
$status = "Updated";
}
return $status;
}
Comments, suggests?
Matthew Musgrove
Who says that programmers can't work in the Marketing Department?
Or is that who says that Marketing people can't program?
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.