程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SyBase數據庫 >> SyBase綜合文章 >> Shell腳本實現sybase數據備份

Shell腳本實現sybase數據備份

編輯:SyBase綜合文章

可在 Sybase 用戶下創建,將其命名為 bcpoutdata 。
然後 chmod a+x bcpoutdata
在 Sybase 用戶下運行 bcpoutdata 即可。
注:
1)將 database_name 改為你的數據庫名。
2)將 pas 改為你的 sa 口令。
3)將 server 改為你的 SQL Server 名。
4)要導入,將 out 改為 in 即可。
最後提醒你,別忘了要在 Sybase 用戶下創建一個目錄,
把 bcpoutdata 置入其中,再運行。
什麽?你要打包、壓縮。
哈,在後面加幾條:
tar cvf data.tar *.bcp
compress data.tar
rm *.bcp
願各位好運

isql -Usa -Ppas -Sserver -otables.tmp <<-EOF
USE database_name
GO
SELECT name FROM sysobjects WHERE type='U' ORDER BY name
GO
exit
EOF
vi tables.tmp </dev/null
:1,2 d
:$ d
:1,$ <<<
: x
EOF
total=`cat tables.tmp|wc -l`
current=0
for table in `cat tables.tmp`
do
current=$current+1
echo "*** $current/$total bcpout $table ***"
bcp database_name..$table out $table.bcp -Usa -Ppas -Sserver -Jiso_1 -c
echo "*** $table done ***n"
done
rm tables.tmp

首先感謝諸位對此文的興趣,現解釋如下:
一、導出用戶數據庫中的表,將其置入文件 tables.tmp 中。

isql -Usa -Ppas -Sserver -otables.tmp <<-EOF
USE database_name
GO
SELECT name FROM sysobjects WHERE type='U' ORDER BY name
GO
exit
EOF

二、編輯 tables.tmp ,因 tables.tmp 中首兩行和末三行,
是我們不要的東西。前次的有小小錯,現更正如下:

vi tables.tmp </dev/null
:1,2 d (刪首兩行)
:$ (到末行)
:-2,. d (刪末三行)
:1,$ <<< (清各行左側空格,即各行頂左。當然一個 < 也夠用,1,$ 也可換成 % )
: x
EOF

至如 <使它們不在屏上顯示,哈哈、、、就用它了。
找本書看看,再在 SHELL 下,帶 <鍵入上述腳本,你就會有收獲的。EOF 可用其他字母,但前後必須一致。

三、導出用戶數據庫各表中的數據

total=`cat tables.tmp|wc -l` (總表數)
current=0 (當前的第 n 張表)
for table in `cat tables.tmp` (將文件 tables.tmp 中的表名依次賦給 table)
do
current=$current+1
echo "*** $current/$total bcpout $table ***"
bcp database_name..$table out $table.bcp -Usa -Ppas -Sserver -Jiso_1 -c
echo "*** $table done ***n"
done
rm tables.tmp

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