我希望将 600 多个 txt 文件导入 MySQL,并希望使用 perl 和以下代码,但它似乎不起作用。从某种意义上说,它连接,然后断开连接,但似乎没有按照说明打开每个文件和处理,所以我的导入表仍然是空的。该目录存在,因此除非我的代码中存在明显错误,否则不确定可能出现什么问题。当我执行 perl 脚本时,我没有收到任何错误消息。每个文件每行有一个记录,用 \n 字符表示记录的结尾。我希望有人可以提供帮助,这个小问题令人困惑,我看不出任何明显的原因说明它为什么不起作用。
use strict;
use warnings;
use DBI;
# Set datasource
my $dsn = "DBI:mysql:host=somehost;database=somedb"
. ";port=someport";
# Connect to database
my $dbh = DBI->connect($dsn,"someuser","somepassword");
print "Status: Connected to MySQL.\n";
my $dir = "t:\\some directory";
opendir (DIR, $dir) or die "Unable to open directory";
my @files = grep /\.txt/, readdir(DIR);
closedir(DIR);
foreach my $file (@files) {
open(FH, '<', "$dir\\$file") or die "Unable to open $file - $!\n";
while (<FH>){
my $data = split (/\n$/);
my $insert = $dbh->prepare('INSERT INTO sometable
(TEXTDATA,SOURCEFILE)
VALUES (?,?)') or die "Prepare failed: " . $dbh->errstr();
$insert->execute($data,$file) or die "Execute failed: " . $dbh->errstr();
}
close(FH);
}
print "Status: Processing of complete.\n";
# Disconnect from the database
$dbh->disconnect ();
print "Status: Disconnected from MySQL.";