以下是我的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
答案 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";
}