我喜欢创建一个通用的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};
}
答案 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();