我们有一个Perl脚本,该脚本运行SQL并将数据放入表中。现在,我们不想传递一个SQL语句,而是希望传递一堆将它们放在一起的.sql文件中。我们知道我们的程序将失败,因为它期望一个SQL语句,而不是一堆SQL语句(也来自.sql文件)。我们如何使其与.sql文件(具有多个INSERT语句?)一起使用。我们正在使用DBI软件包。
一小段代码:
$sth = $dbh->prepare("/home/user1/tools/mytest.sql"); $sth->execute || warn "Couldn't execute statement"; $sth->finish();
不确定您想要什么…
创建DBI对象后,就可以反复使用它。在这里,我从文件读取SQL语句之后的SQL语句,并依次处理每个语句:
use DBI; my $sqlFile = "/home/user1/tools/mytest.sql" my $dbh = DBI::Connect->new($connect, $user, $password) or die("Can't access db"); # Open the file that contains the various SQL statements # Assuming one SQL statement per line open (SQL, "$sqlFile") or die("Can't open file $sqlFile for reading"); # Loop though the SQL file and execute each and every one. while (my $sqlStatement = <SQL>) { $sth = dbi->prepare($sqlStatement) or die("Can't prepare $sqlStatement"); $sth->execute() or die("Can't execute $sqlStatement"); }
请注意,我将SQL语句放在中,prepare而不是包含SQL语句的文件名中。那可能是你的问题吗?
prepare