在異種機(jī)之間實現(xiàn)數(shù)據(jù)庫遷移
2024-07-21 02:36:23
供稿:網(wǎng)友
在異種機(jī)之間進(jìn)行數(shù)據(jù)庫遷移是一件麻煩的事,但有時候為了進(jìn)行數(shù)據(jù)庫升級或其他原因又必須進(jìn)行這種操作,我在工作中就碰到了這種情況,要求是將原來在vax機(jī)(操作系統(tǒng)為open vms)上的生產(chǎn)治理庫PRocdb(sybase數(shù)據(jù)庫)遷移到alpha機(jī)(操作系統(tǒng)為digital unix)上。 借助syabse的power designer和unix的shell命令可以很方便地完成此項工作。
具體過程如下:
一、ALPHA服務(wù)器上建立新的數(shù)據(jù)庫procdb
1.建立生產(chǎn)治理庫procdb
#isql -Usa -Pxxxxxxx
1>create database procdb
2>on data1_dev=60
3>log on data2_dev=60
4>with override
5>go
2.增加新用戶
1>use master
2>go
3>sp_addlogin sss,xxxxxxxxxx,procdb
4>go
5>use procdb
6>sp_changedbowner sss
7>go
二、生產(chǎn)治理庫procdb的移植
1.使用PowerDesigner 從vax上的procdb中移出數(shù)據(jù)庫結(jié)構(gòu)
* 運(yùn)行PowerDesigner;
* 選擇File菜單下的Reverse Engineering …;
* 連接到vax上的procdb數(shù)據(jù)庫;
* 遷移庫結(jié)構(gòu);
* 保存該文件。
2.將從vax獲取的數(shù)據(jù)庫結(jié)構(gòu)移入alpha機(jī)的procdb數(shù)據(jù)庫
* 連接到alpha上的procdb數(shù)據(jù)庫;
* 選擇Database菜單下的Gernate Database。將數(shù)據(jù)庫表結(jié)構(gòu)寫入alpha機(jī)的procdb數(shù)據(jù)庫;
* 執(zhí)行Database菜單下的Gernate Trigger and Procedure,將存儲過程和觸發(fā)器寫入alpha機(jī)的procdb數(shù)據(jù)庫;
3.?dāng)?shù)據(jù)遷移
* 注冊到unix機(jī)上,用select 語句選出Procdb數(shù)據(jù)庫中的表并且輸出到文件tabname.txt中:
#isql -U sss -P xxxxx -o tabname.txt
1> select name from sysobjects
2> where type ='U'
3> go
* 建立awk.out文件,用于產(chǎn)生從vax機(jī)上讀取數(shù)據(jù)的bcp命令批:
# vi awk.out
awk.out
{
print "bcp" $1"out "$1".dat -U sss -P xxxxx -S vax_sybase -c"
}
* 產(chǎn)生讀取數(shù)據(jù)的bcp文件bcp.out
#awk -f awk.out tabname.txt >bcp.out
產(chǎn)生的bcp.out文件格式如下:
bcp table1 out table1.dat -U sss -P xxxxx -S vax_sybase -c
bcp table2 out table2.dat -U sss -P xxxxx -S vax_sybase -c
bcp table3 out table3.dat -U sss -P xxxxx -S vax_sybase -c
.
.
.
* 建立awk.in文件,用于產(chǎn)生寫入數(shù)據(jù)到alpha機(jī)上的bcp命令批:
awk.in
{
print "bcp" $1"in "$1".dat -U sss -P xxxxx -S alpha_sybse -c"
}
* 建立用于插入數(shù)據(jù)的bcp文件bcp.in
#awk -f awk.in tabname.txt >bcp.in
產(chǎn)生的bcp.out文件格式如下:
bcp table1 in table1.dat -U sss -P xxxxx -S vax_sybase -c
bcp table2 in table2.dat -U sss -P xxxxx -S vax_sybase -c
bcp table3 in table3.dat -U sss -P xxxxx -S vax_sybase -c
.
.
.
* 執(zhí)行這兩個bcp文件
#ksh bcp.out
#ksh bck.in
自此,數(shù)據(jù)庫遷移完成,以上代碼在digital unix上運(yùn)行通過。power designer在Win98上運(yùn)行。