perl操作sqlserver實現BCP

來源:互聯網
上載者:User

標籤:使用   os   檔案   代碼   ad   sql   伺服器   ef   

#!C:\Perl64\bin
#通過BCP備份與還原SQLSERVER指定的表
use 5.014;

#載入使用者和密碼設定檔
my $username ;
my $passwd;

##擷取使用者名稱
my $dir="c:";
$dir=$dir."/";
my $filename="config.txt";
my $keysword="username:";
my $count="50";
my $begincount=index($keysword,":");
my($file);
open(FILEH,$dir.$filename);
 while(my $test=<FILEH>){
   if((index($test,$keysword))>=0){
 my $test1=substr($test,$begincount+1,$count);
    #print "$test1";
 chomp($username=$test1);
   }
 }
close(FILEH);


##擷取密碼
my $dir="c:";
$dir=$dir."/";
my $filename="config.txt";
my $keysword="password:";
my $count="50";
my $begincount=index($keysword,":");
my($file);
open(FILEH,$dir.$filename);
 while(my $test=<FILEH>){
   if((index($test,$keysword))>=0){
 my $test2=substr($test,$begincount+1,$count);
    #print "$test2";
 chomp($passwd=$test2);
   }
 }
close(FILEH);
print "-------------------------------------------------------------------\n";
print "請首先檢查使用者和密碼設定檔config.txt儲存路徑是否為$dir$filename\n";
print "-------------------------------------------------------------------\n";

print "重要提示:備份表操作請輸入0;還原表操作請輸入1\n";
print "請輸入作業碼:";
chomp(my $inp=<STDIN>);
print "你輸入的作業碼為$inp\n";

#判斷輸入為0即備份操作
if ($inp eq 0){
print ‘伺服器IP:(不輸入預設為localhost)‘;
chomp(my $a = <STDIN>);
if ($a==‘‘){
$a=‘localhost‘;
}else{
print "你輸入的伺服器IP為:$a\n";
}


print ‘使用者名稱:‘;
chomp(my $b = <STDIN>);
print "你輸入的使用者名稱為:$b\n";
if($b eq $username) {

  print "使用者通過!\n";

} else {
  print "對不起,使用者名稱錯誤\n";
  exit;
}

 

print "使用者密碼: ";
chomp (my $readPsw = <STDIN>);
if($readPsw eq $passwd) {

  print "密碼正確!\n";

} else {
  print "對不起,密碼錯誤\n";
  exit;
}


print "重要提示:備份表的表名格式為:test.dbo.t1\n";
print ‘備份的表:‘;
chomp(my $d = <STDIN>);
print "你輸入的備份的表:$d\n";


print ‘儲存路徑:‘;
chomp(my $e = <STDIN>);
print "你輸入的儲存路徑:$e\n";

if (-e $e){
print "$e已經存在!是否刪除?(y刪除;n不刪除)\n";
chomp(my $i=<STDIN>);
given ($i)
{
when ("y") {
unlink $e;
print "開始備份表!\n";
system (" bcp $d out $e -c -t ‘,‘ -m 1 -a 49152 -b 5000 -F 1 -S $a -U $b -P $readPsw ");
}
when  ("n")
{
print "-----------備份已經終止-----------\n";
print "指定檔案存在,請重新輸入檔案名稱!\n";
}
default {print "只能輸入y或n!\n";}
}
}
else{
{
system (" bcp $d out $e -c -t ‘,‘ -m 1 -a 49152 -b 5000 -F 1 -S $a -U $b -P $readPsw ");
}
}
}

#判斷輸入為1還原作業
elsif($inp eq 1){
print ‘伺服器IP:(不輸入預設為localhost)‘;
chomp(my $a = <STDIN>);
if ($a==‘‘){
$a=‘localhost‘;
}else{
print "你輸入的伺服器IP為:$a\n";
}
print ‘使用者名稱:‘;
chomp(my $b = <STDIN>);
print "你輸入的使用者名稱為:$b\n";
if($b eq $username) {

  print "使用者通過!\n";

} else {
  print "對不起,使用者名稱錯誤\n";
  exit;
}

 

print "使用者密碼: ";
chomp (my $readPsw = <STDIN>);
if($readPsw eq $passwd) {

  print "密碼正確!\n";

} else {
  print "對不起,密碼錯誤\n";
  exit;
}

print ‘需要還原的表:‘;
chomp(my $d = <STDIN>);
print "你輸入的備份的表:$d\n";


print ‘備份儲存路徑:‘;
chomp(my $e = <STDIN>);
if (-e $e) {
print "你輸入的備份儲存路徑:$e\n";
system (" bcp $d in $e -c -t ‘,‘ -m 1 -a 49152 -b 5000 -F 1 -S $a -U $b -P $readPsw ");
}
else {
print "對不起,指定的備份檔案$e不存在,請核實!\n";
}
}
else{
print "請參考重要提示!\n";
}
system ‘pause‘;

 

----config.txt

 

username:sa
password:passwd123!

 

 

----使用方法

1.將config.txt儲存到c盤根目錄

根據實際情況修改該檔案內容

2.執行bcp.pl


 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.