標籤:使用 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