我们有一个Perl脚本,它运行sql并将数据放入表中.
现在我们不想提供单个sql语句,而是希望将它们串起来放在.sql文件中.我们知道我们的程序会失败,因为它需要一个单独的sql语句,而不是它们的一大堆(也来自.sql文件).我们如何使用.sql文件(具有多个INSERT语句?).我们正在使用DBI包.
现在我们不想提供单个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"); }