在perl错误处理中加载数据infile mysql语句

时间:2013-02-14 13:59:38

标签: mysql perl

以下是我的perl代码 我提到了以下链接http://www.tol.it/doc/MySQL/chapter6.html。如果有更好的请发帖。     使用Mysql;

my $db = Mysql->connect($mysqlhost, $mysqlDB, $mysqlUser, $mysqlPassword);
$db->selectdb("$mysqlDB");
my $loadQuery="LOAD DATA INFILE '$filename' INTO TABLE $pageURLTable FIELDS TERMINATED  BY '\\t' LINES TERMINATED BY '\\n'";
print "Executing $loadQuery";       
my $loadresult=$db->query($loadQuery);      
if(!$loadresult){
  print "Error: MySQl Load failed.System error message:$!.";
  return -1;
}
print "Info:".$loadresult->info"; ## this raises error MySQL::Statement info not loadable;

有什么问题? 您能否建议一种更好的编码方式,以便更好地捕获加载数据文件错误?

谢谢, Neetesh

2 个答案:

答案 0 :(得分:0)

尝试使用 - >做方法而不是 - >查询。 确保在数据库中启用了“加载数据内联”。 如果上面不起作用,你可以使用system(mysql -e“LOAD DATA INFILE ...”)

答案 1 :(得分:0)

我通常使用DBI recipes。 "执行sql语句"我喜欢做类似$ rows = $ sth-> execute();通过最后一个语句给出受影响的行,如果加载csv文件后行>> 0,我知道我已成功将数据加载到数据库中。

my $sth = $dbh->prepare($sql)
  or die "Can't prepare SQL statement: ", $dbh->errstr(), "\n";
$rows = $sth->execute();
if ($rows>0)
{
    print "Loaded $rows rows\n" if ($Debug);
}
else {
    print "Can't execute SQL statement: ", $sth->errstr(), "\n";
}