我对Perl相对较新。我一直在尝试使用CGI脚本从文本文件向数据库插入数据。我已经为它编写了代码并且它正常工作。但是当我尝试对数据施加限制时使用LIMIT关键字插入时出现问题。请检查我哪里出错以及需要修改的内容。谢谢你的建议。
这是代码
#!/usr/bin/perl
use warnings;
use strict;
use CGI ':standard';
use DBI;
if(param())
{
my @params=param();
my $limit=param('limit')||'';
my $dbh =DBI->connect("DBI:mysql:sample","root","");
my $var="LOAD DATA LOCAL INFILE 'C:/test.txt' INTO TABLE sample2 FIELDS TERMINATED BY '\n' WHERE LIMIT 0,$limit";
my $sth = $dbh->do($var) or die "prepare failed: " . $dbh->errstr();
print $sth ."Records inserted";
$sth->finish();
$dbh->disconnect();
print
header(),
start_html(
-title=>'Welcome',
-text=>'#520063'
),
#h1("Records have been displayed"),
end_html();
}
else
{
print
header(),
start_html('A Simple Form'),
h1('Please enter the limit '),
start_form(),
'Limit: ',
textfield(-name=>'limit'),
br(),
#'Phone Number: ',
#textfield(-name => 'number'),
#br(),
submit(),
end_form(),
end_html();
}
答案 0 :(得分:2)
没有错误消息我不能完全确定,但问题很可能在你的SQL中。
LOAD DATA LOCAL INFILE 'C:/test.txt'
INTO TABLE sample2
FIELDS TERMINATED BY '\n'
WHERE LIMIT 0,$limit
有问题。
基本上整个最后一行都行不通。通常,如果SQL命令在程序中不起作用,请尝试启动MySQL命令行并在那里调试命令。
LOAD DATA INFILE没有办法限制它会吸引多少行,this is an oft requested feature。为了解决这个问题,我建议在将文件提供给MySQL之前复制和截断文件。