Как ограничить вставку данных в MySQL из файла, используя Perl - PullRequest
0 голосов
/ 19 февраля 2012

Я относительно новичок в 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();
} 

1 Ответ

2 голосов
/ 19 февраля 2012

Без сообщения об ошибке я не могу быть полностью уверен, но проблема, вероятно, в вашем SQL.

LOAD DATA LOCAL INFILE 'C:/test.txt'
INTO TABLE sample2
FIELDS TERMINATED BY '\n'
WHERE LIMIT 0,$limit

Есть проблемы.

  • Там предложение WHERE пустое (LIMIT не является частью предложения WHERE)
  • ЗАГРУЗКА ДАННЫХ INFILE не принимает предложение WHERE
  • ЗАГРУЗКА ДАННЫХ INFILE не принимает предложение LIMIT

По сути, вся последняя строка не будет работать. В общем, если команда SQL не работает в программе, попробуйте запустить командную строку MySQL и отладить ее там.

ЗАГРУЗКА ИНФИЛЬНЫХ ДАННЫХ не имеет возможности ограничить количество строк, которые он вытягивает, это часто запрашиваемая функция . Чтобы обойти это, я бы предложил скопировать и обрезать файл перед передачей его в MySQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...