我們許多國內用戶曾經大量使用的數據庫管理系統是XBASE系列(如dBASE、FoxBASE和 F
oxPRO等)數據庫管理系統。也有許多銀行曾采用UNIFY數據庫。隨著數據庫技術的發展和U N
IX/XENIX的普及,許多用戶重新采用一些先進的大型關系數據庫如(ORACLE、INFORMIX和SY
BASE)建立新的業務系統,這樣就產生了一個數據移植的問題,如果重新用手工將數據錄入新系統,顯然太浪費人力。那么如何使用計算機自動轉換數據呢?
任何兩種不同類型的數據庫都可以通過一種中介文件來進行數據轉換,這個中介文件就是文本文件。任何一種數據庫都可以通過相應命令,將數據庫中數據生成ASCII文本文件,也可以將文本文件中 數據轉入數據庫中。但在轉換過程中必須注意一些問題。下面分別舉例說明。
一、dos操作系統中數據向unix/xenix系統中傳送。
如果要將dos系統下的Foxplus數據庫中數據,轉換到unix中的INFORMIX數據庫中。那么首先要將Foxplus數據庫中數據轉換成文本文件txt,然后將形成的文本文件拷入dos盤中。再將此dos盤中文件通過unix的shell命令doscp拷入unix系統中,再用load命令將此文本文件裝入INFORMIX的數據表中。在轉換過程中還必須注意數據類型的問題,Foxplus數據庫的日期型數據是yy/mm/dd形式(也可以設成其他形式),但拷入txt文本文件后就成了帶世紀的19yy
mmdd形式,而INFORMIX所需的形式為mmddyy式,故轉換時需重新組合。
二、漢字使用中西文兩字節的數據庫與使用引薦符三字節漢字的數據庫之間的數據轉換。
有許多銀行的應用軟件原來是采用UNIFY數據庫開發的,如今一些單位又基于INFORMIX ,SY
BASE,COBOL等數據庫重新開發了系統。在移植數據時出現了漢字模式不一致的問題。比如
,我行原來使用的儲蓄系統是基于UNIFY數據庫開發的,后來要將其中大量數據移入總行開發的COBOL系統中,可是UNIFY數據庫中漢字使用引薦符三字節,而COBOL系統中使用的漢字是中西文兩字節,所以,從UNIFY中轉出的包含漢字的文本文件中的數據,必須經過漢字模式轉換才能移入COBOL系統中。為此,筆者用C語言做了一個轉換程序,將txt文件中的引薦符三字節漢字轉換成中西文兩字節的漢字。具體程序如下:
chang3-2.c
#include
main()
{
FILE *fp1,*fp2;
int c;
/*three.txt為包含引薦符三字節漢字的文本文件*/
if ((fp1=fopen("three.txt","r"))=NULL)
{
printf("three.txt文件打開失敗!\n");
exit(0);
}
/*two.txt為轉換出的漢字模式為中西文兩字節的文本文件*/
fp2=fopen("two.txt","w");
c=getc(fp1);
while(c!=EOF)
{
if(c=='\') /*引薦符為"\"*/
{
putc(getc(fp1)|0x80,fp2); /*將高位置"1"*/
c=getc(fp1);
putc(c|0x80,fp2);
}
else
putc(c,fp2);
c=getc(fp1);
}
fclose(fp1);
fclose(fp2);
return;
}
經過以上程序轉換的文本文件中的數據,就可以直接轉入COBOL系統數據庫或其他可使用中西文兩字節漢字的數據庫中了。
總之,用計算機自動轉換數據會很快捷,也有很多辦法,但轉換時一定要注意兩種數據結構數據類型的一致,否則就會產生錯誤。