#!/usr/local/perl5.00503/bin/perl -w #--------------------------------------------------------------------- +---------- # Script that extracts all the info from the csv file and inserts it i +nto the # oracle data table, the only thing it doesnt work out is all the page + category # codes, so you have to do that yourself. #--------------------------------------------------------------------- +---------- use strict; use lib '../lib'; use lib '/eld/lib/perl5/site_perl/5.005/sun4-solaris/'; use DBI; my $csvdbh = DBI->connect('DBI:CSV:f_dir=../data','','', {RaiseError = +> 1, PrintError => 1}) or die "cant connect $DBI::errstr"; my $oradbh = DBI->connect('DBI:Oracle:hloglive.world','uid','pwd', { RaiseError => 1, PrintError => 1, AutoCommit => 0}) or die "cant do ora $DBI: +:errstr"; my $sth3 = $csvdbh->prepare('select * from linkdata'); $sth3->execute or die "cant execute csv $DBI::errstr"; my $rownum = 1; my $sth2 = $oradbh->prepare('select id from page_cat where name = ?'); my $ref; while ($ref = $sth3->fetchrow_arrayref) { foreach (@$ref) { $_ = '' unless defined } my @row = @$ref; $owner = uc($row[1]); $row[3] = ' ' if ($row[3] eq ''); my $page = ''; $sth2->execute($row[9]); while (@_ = $sth2->fetchrow) { $page = $_[0]; } $page = 1 unless ($page); $sth2->finish; $row[5] =~ s/^(.{30})?.+/$1/ if (length($row[5]) > 30); $row[6] =~ s/^(.{200})?.+/$1/ if (length($row[6]) > 200); eval { for (@row[3..8]) { $_ = $oradbh->quote($_); } my $sql = qq%insert into DATA values ($rownum, '$owner', $page, SYSDATE, $row[3],$row[5],$row[6],$row[7], $row[8],'','','',' +','' )%; my $insth = $oradbh->prepare($sql); $insth->execute; $insth->finish; }; $rownum++; if ($@) { print "$@"; $oradbh->rollback; } else { print "row done"; $oradbh->commit; } print "$rownum\n"; } $sth3->finish or die "$DBI::errstr"; $oradbh->disconnect; $csvdbh->disconnect;
In reply to Oracle Import from CSV by agoth
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |