Subject: | SQLLOADER contol file bug? |
Date: | Thu, 9 Apr 2009 16:58:02 +0100 |
To: | <bug-Oracle-SQLLoader [...] rt.cpan.org> |
From: | "Daniel Kavanagh" <Daniel.Kavanagh [...] intecbilling.com> |
Hello,
Perl version: This is perl, v5.8.1 built for IA64.ARCHREV_0-LP64
Operating System: HP-UX mtnit02 B.11.23
# $Id: SQLLoader.pm,v 1.43 2005-07-28 03:10:23 ezra Exp $
I'm trying to specify the destination of the control file but it is not
working. It works for the log and bad files though. The control file is
defaulting to the directory in which the infile is. Any advice?
My code is as follows
#Append the file path to file name
my $file_name_path = $file_dir_path.'/'.$file_name;
#Generate the paths and filenames for the control, log
and bad files
my $control_file_path =
$error_dir_path.'/'.$file_name.'.ctl';
my $log_file_path =
$error_dir_path.'/'.$file_name.'.log';
my $bad_file_path =
$error_dir_path.'/'.$file_name.'.bad';
my $discard_file_path =
$error_dir_path.'/'.$file_name.'.discard';
$ldr = new Oracle::SQLLoader(
infile => $file_name_path,
terminated_by => ',',
username => $user,
password => $pass,
control_file => $control_file_path,
logfile => $log_file_path,
badfile => $bad_file_path,
discardfile => $discard_file_path,
cleanup => 0
);
I was looking at the code for generating the control file...
Not 100% about it but should the line
my $cmd = "$exe control=$self->{'_control_file'} ".
Be
my $cmd = "$exe control=$self->{'_cfg_global'}{'_control_file'} ".
i.e. be preceded by a {'_cfg_global'}
sub executeLoader {
my $self = shift;
$self->generateControlfile();
# if ($self->{'_OSTYPE'} ne 'WIN') {
my $exe = $ENV{'ORACLE_HOME'}."/bin/$SQLLDRBIN";
my $cmd = "$exe control=$self->{'_control_file'} ".
"userid=$self->{'_cfg_global'}{'userid'} ".
"log=$self->{'_cfg_global'}{'logfile'} 2>&1";
Any advice?
Thanks and regards,
Daniel Kavanagh
Senior Development Consultant
Message body is not shown because it is too large.