perl oracle export import 实现代码

#!/usr/bin/perl 

use strict;
use DBI;

my $ip="";
my $port="";
my $sid="";
my $user="";
my $pwd="";
my $tablename;
my $delimiter;
my $path;
require public_pg;

my $field=undef;
my @row=undef;
sub getSelect2{
        my ($dbh)=Suzm::connect_db($ip,$port,$sid,$user,$pwd);
        #my $sthboth = "select * from tablename";
        my $sthboth = "select * from ${tablename}";
        my $sth=$dbh->prepare($sthboth);
             $sth->execute();
             print "Begin export data\n";
        while(@row= $sth->fetchrow_array()){
                #foreach(0..$#row){
                foreach  $field (@row){
                     $field =~ s/\n|\r//g;
                     print INFO "$field"."$delimiter";
                }
                print INFO "\n";
        }
        print "Export data ends\n";
    $sth->finish();
    $dbh->disconnect();
    close(INFO);
}


#程序入口
sub main {
    
    getSelect2();
    return 0;
}


if($#ARGV<1){
    print "Please input parameters:\n1.tablename\t 2.delimiter\t 3.fiel path\n";
    exit(0);
}

$tablename=$ARGV[0];
if (uc($ARGV[1]) eq "B") {
     $delimiter="#";
}else{
    $delimiter=$ARGV[1];
}

$path=$ARGV[2];
open (INFO,">","$path\\export_$tablename.dat");

my $rec=main();
exit($rec);

上面的是export,下面的是import

#!/usr/bin/perl 

use strict;
use DBI;

my $ip="";
my $port="";
my $sid="";
my $user="";
my $pwd="";
my $tablename;
my $delimiter;
my $file;
my $val;
require public_pg;


#method 3;
my $field=undef;
my @row=undef;
sub Input_date{
        my ($dbh)=Suzm::connect_db($ip,$port,$sid,$user,$pwd);
        my $sth = $dbh->prepare(" insert into tablename values($val)") || die $dbh->errstr;
        while (<FILE>) { 
         chomp;    
             my @get_values = split //;    
              $sth->execute(@get_values) || die $dbh->errstr;    
              }     
    $dbh->disconnect();
    close(FILE);
}


#程序入口
sub main {
    
    Input_date();
    return 0;
}


if($#ARGV<1){
    print "Please input parameters:\n1.tablename\t 2.delimiter\t 3.fiel path and name\n";
    exit(0);
}

$tablename=$ARGV[0];
if (uc($ARGV[1]) eq "B") {
     $delimiter="";
}else{
    $delimiter=$ARGV[1];
}

$file=$ARGV[2];
$val="?," x $ARGV[3];
$val =~ s/,$//g;
open (FILE,"<","$file");

my $rec=main();
exit($rec);

公共package

#!/usr/bin/perl -w

package Suzm;

sub connect_db{
    my ($ip,$port,$sid,$user,$pwd)=@_;
    my $dbh = DBI->connect("DBI:Oracle:host=$ip;port=$port;sid=$sid",$user,$pwd
    ,{AutoCommit=>1,PrintError=>1,RaiseError=>1}
    ) or die "Can't connect db,DBI->errstr"; 

    return $dbh;
}



1;


你可能感兴趣的:(oracle,perl,select,insert,exp,imp)