資源描述:
《foxpro dbf數(shù)據(jù)庫轉(zhuǎn)換成sql server 6.5表的幾種方法》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、FoxproDBF數(shù)據(jù)庫轉(zhuǎn)換成SQLServer6.5表的幾種方法 摘要:本文主要介紹用SQLServerbcp、Foxpro編程、Access等方法將.dbf數(shù)據(jù)庫轉(zhuǎn)換到SQLServer表的方法。關(guān)鍵詞:XbaseDBFSQLServer數(shù)據(jù)庫轉(zhuǎn)換1、前言當今,數(shù)據(jù)庫聯(lián)網(wǎng)實現(xiàn)數(shù)據(jù)共享已經(jīng)成為信息系統(tǒng)建設(shè)中一個迅速發(fā)展的潮流。利用SQLServer、Oracal、Sybase等客戶機/服務(wù)器(Client/Server)體系結(jié)構(gòu)的數(shù)據(jù)庫系統(tǒng)進行信息系統(tǒng)的開發(fā)、更新改造已成為當前一大趨勢。而Dbas
2、e、Foxbase、Foxpro是我國近年應(yīng)用較為廣泛的數(shù)據(jù)庫開發(fā)軟件,許多單位、部門多年來積累了大量的寶貴的數(shù)據(jù)資料,這些部門在進行計算機信息系統(tǒng)改造、更新的同時,面臨如何繼承大量歷史數(shù)據(jù)的問題,本文介紹三種將DBF數(shù)據(jù)轉(zhuǎn)換成SQLServer表的方法。2、利用SQLServer所提供的塊拷貝實用程序(bcp)轉(zhuǎn)換實用程序bcp.exe可從服務(wù)器SQL目錄下的BINN子目錄下獲得。2.1、bcp的命令格式及主要參數(shù)bcp[[database_name.]oe{in
3、out}datafile[/mma
4、xerror][/fformatfile][/eerrfile][/n][/c][/t]field_term][/rro][/Ulogin_ID][/Ppasse][/vversion][/apacket_size]主要參數(shù):database_name數(shù)據(jù)庫名in
5、outin從文件到數(shù)據(jù)庫表的拷貝。out從數(shù)據(jù)庫表到文件拷貝。datafile操作系統(tǒng)文件的路徑。該路徑的長度可以是1-255個字符。也可指明磁盤驅(qū)動器名字。/C用字符類型作為缺省值執(zhí)行拷貝操作。/ulogin_ID指定登錄標識符。/Ppa
6、sse允許用戶指定連接到哪個SQLServer2.2、實現(xiàn)轉(zhuǎn)換的具體方法我們以Foxpro的數(shù)據(jù)庫結(jié)構(gòu)的單位職工庫(zg.dbf)為例,進行數(shù)據(jù)轉(zhuǎn)換。其數(shù)據(jù)結(jié)構(gòu)為:字段名類型字段長度小數(shù)點位數(shù)字段內(nèi)容bhC4職工編號xmC8職工姓名xbC2性別nlN20年齡ze='zg'數(shù)據(jù)庫設(shè)備名physname='c:\zg\zg.dat'數(shù)據(jù)庫文件所在路徑vdevno=8數(shù)據(jù)庫設(shè)備的標識號size=5120數(shù)據(jù)庫設(shè)備大小(10M)B、建立zg表createdatabasezg_dataonzg=1024,l
7、ogonzg=1024建立數(shù)據(jù)庫usezg_datacreatetablezg(bhchar(4)null,xmchar(8)null,xbchar(2)null,nlintnull,zenull,jltextnull,zpimagenull)建立表go(2)、在客戶機上啟動Foxpro,用USE命令打開需轉(zhuǎn)換的.dbf文件,用COPY命令將.dbf文件中數(shù)據(jù)轉(zhuǎn)換成標準的文本文件.txt,命令如下:usezg.dbfcopyalltozg.txtdeliainserver/umanager/P0001
8、(mainserver為服務(wù)器名,manager為用戶名,0001為用戶口令)。該轉(zhuǎn)換方法速度較快,不占用服務(wù)器上事務(wù)日志空間。但較為復(fù)雜、繁鎖,操作者必須熟練掌握Foxpro、SQLServer的命令和操作,而且無法將Foxpro的Memo、General字段轉(zhuǎn)換到SQLServer表。3、用Foxprofor"sql_=sql_+"text"casefield_type="G"sql_=sql_+"binary"endcaseskipif.not.eof()sql_=sql_+","endifen
9、ddosql_=aql_+")"success=dbexec(handle,sql_)ifsuccessp;若連接不成功edbf_name待轉(zhuǎn)換的.dbf數(shù)據(jù)庫store""tosql_dbsql_db目的SQL數(shù)據(jù)庫store""tosql_sql_向SQLServer提交的命令store""tofnamefname字段名store0tohandlehandleFoxpro與SQLServer連接的標識store0tosuccesssuccess命令提交成功與否的標識setlibrtofpsql.f
10、ll2,20say"請輸入要轉(zhuǎn)換的數(shù)據(jù)庫(dbf)名:"getdbf_name3,20say"請輸入目的SQL數(shù)據(jù)庫名:"getsql_dbreaddbf_name=allt(dbf_name)sql_db=allt(sql_db)handle=dbconnect(sql_db,"sa","")建立Foxpro與SQLServer連接ifhandle>0若連接成功則usedbf_nameasop_dbfin0以op_dbf為別名打開待轉(zhuǎn)換數(shù)據(jù)庫se