Моя проблема заключается в использовании perl для загрузки локального файла в базу данных db2. содержимого файла так же, как:Использование perl не может загрузить файл
john|man|eight|usa
pis|woman|seven|china
раскола по «|», я просто хочу загрузить его в базу данных DB2. Вот код:
use strict;
use DBI;
use DBD::DB2;
sub main {
$dbh = getConnect($dataSource);
if (defined $dbh) {
print "success\n";
} else {
print "failed。\n";
exit(1);
}
print "loading file……\n";
run_sql();
return closeConnect($dbh);
}
sub run_sql {
my $sqlStr = "";
$sqlStr = "
load from '$DATA_FILE' of del modified by codepage=1208 coldel| insert into $TABLE
"
;
print "$sqlStr \n";
my $sth = $dbh->prepare($sqlStr) or return $FALSE;
my $ret = $sth->execute();
$sth->finish();
if ($ret) {
print "success!";
return $TRUE;
} else {
print "failed!";
exit(1);
}
}
main();
, когда я запустить этот сценарий, он cant't work.can someboday помочь мне!
Что такое сообщение об ошибке? Является ли инструкция LOAD фактически понятной DB2, или она имитируется средствами клиентского интерфейса? (Если вы использовали Informix, вы бы так не могли LOAD, это утверждение, что различные интерфейсные модули моделируют, считывают файл, разбивают данные и кодируют инструкцию INSERT, используя, конечно, заполнители, чтобы получить данные в базу данных.) Ваш скрипт неполный; вы не показываете '$ dataSource', но это, вероятно, не имеет значения. Вы должны убедиться, что у вас есть ошибки печати DBI. Вам, вероятно, не нужно использовать DBD :: DB2; '- просто использовать DBI;' достаточно. –
сообщение об ошибке: load from 'd: \ tpa_link.sum.txt' of del, измененный copdeage = 1028 coldel | Вставить в sdata.dbo.tpa_link_sum DBD :: DB2 :: st выполнить не удалось: [IBM] [драйвер CLI] [DB2/NT] SQL0104N SQLSTATE = 42601 – John
Это выглядит как возможное значение для расширенного оператора, а не сообщения об ошибке. Это должно иметь пятизначное значение SQLSTATE и некоторый текст, описывающий проблему. По крайней мере, используйте '$ dbh -> {PrintError} = 1;', чтобы включить отчет об ошибках из DBI. Рассмотрим работу с DBI_TRACE = 3 или даже выше (9?) И анализ того, что он говорит. –