如何将sql查询输入文件传递给perl dbi子例程

时间:2011-07-15 23:24:57

标签: perl

我喜欢创建一个通用的perl脚本,该脚本将从单独的文件输入sql查询并将其与perl dbi(子例程)一起使用,而不是硬编码语句。有人能告诉我一个如何做到这一点的例子吗?

例如我在子例程中有这个:

sub get_val
{
  my $sth = $dbh->prepare(q{SELECT count(*) AS COUNT FROM TEST1) ||
      die ("Can't connect: ".$DBI::errstr."\n");         
  $sth->execute;
  my $row = $sth->fetchrow_hashref;
  $sth->finish;
  return $row->{COUNT};
}

1 个答案:

答案 0 :(得分:1)

这是一般的想法:

$/ = ';';
open FH, "< file.sql";
while (<FH>) {
    $dbh->do($_);
    # or:
    # my $sth = $dbh->prepare($_);
    # $sth->execute();
}
close FH;

当然,这不一定会处理评论或引用字符串中的;字符等。但这应该会引导您朝着正确的方向前进。

或者,如果您知道该文件只包含一个语句:

undef $/;
open FH, "< file.sql";
my $sth = $dbh->prepare(<FH>);
close FH;
$sth->execute();