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;


转载于:https://my.oschina.net/suzm/blog/325338

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值