1

以下は、次のリンクhttp://www.tol.it/doc/MySQL/chapter6.htmlを参照した私の perl コードです。より良いものがあれば投稿してください。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

->query の代わりに ->do メソッドを使用してみてください。データベースで 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 に答える