1

下面是我的 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;

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

谢谢,尼特什

4

2 回答 2

0

尝试使用 ->do 方法而不是 ->query。确保在您的数据库中启用了 Load Data Inline。如果以上不起作用,您可以使用 system(mysql -e "LOAD DATA INFILE...")

于 2013-02-14T14:34:32.023 回答
0

我一般使用DBI 食谱。“执行 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";
}
于 2014-10-05T13:50:59.517 回答