现在我有两个散列哈希值,我通过解析一个日志文件创建了1个哈希,我从SQL获取了1个哈希。我需要比较它们以确定日志文件中的记录是否已经存在于数据库中。现在我通过遍历每个元素来比较它们:比较哈希散列的最佳方法是什么?
foreach my $i(@record)
{
foreach my $a(@{$data})
{
if ($i->{port} eq $a->{port} and $i->{name} eq $a->{name})
{
print "match found $i->{name}, updating record in table\n";
}
else
{
print "no match found for $tableDate $i->{port} $i->{owner} $i->{name} adding record to table\n";
executeStatement("INSERT INTO client_usage (date, port, owner, name, emailed) VALUES (\'$tableDate\', \'$i->{port}\', \'$i->{owner}\', \'$i->{name}\', '0')");
}
}
}
当然,随着数据库变大,这需要很长时间才能运行。有没有更有效的方法来做到这一点?我可以直接比较密钥吗?
这样的声音应该在SQL中解决,而不是perl。当然,有一种方法可以在SQL中“更新或插入”? – TLP 2012-01-09 16:36:51