我的问题是使用perl将本地文件加载到db2数据库。 文件内容就像:
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();
当我运行这个脚本时,它无法工作。今天有人帮助我!
答案 0 :(得分:0)
LOAD
不是可以编写的SQL语句,因此无法通过DBI(或任何其他仅限SQL的接口(如JDBC))执行。LOAD
是DB2的实用程序CLP知道如何执行。
如果你只能通过SQL执行,你可以考虑使用ADMIN_CMD
to call the LOAD
utility,但这有缺点,它要求数据文件位于数据库服务器上。
或者,您可以考虑尝试使用perl的system()
调用来利用DB2 CLP。 This SO answer shows how要这样做。请注意,如果您的数据文件不在数据库服务器上,则您需要确保在加载语句中指定CLIENT
(即LOAD CLIENT from $datafile ...
)