程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> perl腳本備份還原sql server

perl腳本備份還原sql server

編輯:關於SqlServer

寫了一個perl腳本靈活來備份或還原。

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

username:sa

password:passwd123!

根據實際情況修改該文件內容

2.執 行bcp.pl

#!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';

查看本欄目

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved