Foxpro DBF數(shù)據(jù)庫轉(zhuǎn)換成SQL Server 6.5表的幾種方法_第1頁
Foxpro DBF數(shù)據(jù)庫轉(zhuǎn)換成SQL Server 6.5表的幾種方法_第2頁
Foxpro DBF數(shù)據(jù)庫轉(zhuǎn)換成SQL Server 6.5表的幾種方法_第3頁
Foxpro DBF數(shù)據(jù)庫轉(zhuǎn)換成SQL Server 6.5表的幾種方法_第4頁
Foxpro DBF數(shù)據(jù)庫轉(zhuǎn)換成SQL Server 6.5表的幾種方法_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、Foxpro DBF數(shù)據(jù)庫轉(zhuǎn)換成SQL Server 6.5表的幾種方法Foxpro DBF數(shù)據(jù)庫轉(zhuǎn)換成SQL Server 6.5表的幾種方法 Foxpro DBF數(shù)據(jù)庫轉(zhuǎn)換成SQL Server 6.5表的幾種方法 Foxpro DBF數(shù)據(jù)庫轉(zhuǎn)換成SQL Server 6.5表的幾種方法 摘要:本文主要介紹用SQL Server bcp、Foxpro編程、Access等方法將.dbf數(shù)據(jù)庫轉(zhuǎn)換到SQL Server表的方法。關(guān)鍵詞:Xbase DBF SQL Server 數(shù)據(jù)庫 轉(zhuǎn)換1、前言當(dāng)今,數(shù)據(jù)庫聯(lián)網(wǎng)實現(xiàn)數(shù)據(jù)共享已經(jīng)成為信息系統(tǒng)建立中一個迅速開展的潮流。利用SQL Server、O

2、racal、Sybase等客戶機(jī)/效勞器Client/Server體系構(gòu)造的數(shù)據(jù)庫系統(tǒng)進(jìn)展信息系統(tǒng)的開發(fā)、更新改造已成為當(dāng)前一大趨勢。而Dbase、Foxbase、Foxpro是我國近年應(yīng)用較為廣泛的數(shù)據(jù)庫開發(fā)軟件,許多單位、部門多年來積累了大量的珍貴的數(shù)據(jù)資料,這些部門在進(jìn)展計算機(jī)信息系統(tǒng)改造、更新的同時,面臨如何繼承大量歷史數(shù)據(jù)的問題,本文介紹三種將DBF數(shù)據(jù)轉(zhuǎn)換成SQL Server表的方法。2、利用SQL Server所提供的塊拷貝實用程序bcp轉(zhuǎn)換實用程序bcp.exe可從效勞器SQL目錄下的BINN子目錄下獲得。2.1、bcp的 命令格式及主要參數(shù)bcp database_name

3、.owner. table_name in|out datafile /m maxerror /f formatfile /e errfile /n /c /t field_term /r row_term /U login_ID /P password /S servername /v version /a packet_size主要參數(shù):database_name 數(shù)據(jù)庫名in|out in從文件到數(shù)據(jù)庫表的拷貝。out從數(shù)據(jù)庫表到文件拷貝。datafile操作系統(tǒng)文件的途徑。該途徑的長度可以是1255個字符。也可指明磁盤驅(qū)動器名字。/C 用字符類型作為缺省值執(zhí)行拷貝操作。/u login

4、_ID 指定登錄標(biāo)識符。/P password 允許指定一個口令。/S servername 允許用戶指定連接到哪個SQL Server2.2、實現(xiàn)轉(zhuǎn)換的詳細(xì)方法我們以Foxpro的數(shù)據(jù)庫構(gòu)造的單位職工庫zg.dbf為例,進(jìn)展數(shù)據(jù)轉(zhuǎn)換。其數(shù)據(jù)構(gòu)造為:字段名 類型 字段長度 小數(shù)點(diǎn)位數(shù) 字段內(nèi)容bh C 4 職工編號xm C 8 職工姓名xb C 2 性別nl N 2 0 年齡zw C 10 職務(wù)gzsj D 參加工作時間jl M 簡歷zp G 照片實現(xiàn)步驟:(1)、啟動效勞器,進(jìn)入Window NT,SQL Server 6.0,翻開SQL Enterprise Manager為單位職工庫創(chuàng)立

5、一個數(shù)據(jù)庫設(shè)備zg.dat,然后在該設(shè)備上建立zg數(shù)據(jù)庫及表(Table),表的數(shù)據(jù)構(gòu)造要與zg.dbf的數(shù)據(jù)構(gòu)造一致。或用以下SQL Server命令創(chuàng)立設(shè)備和創(chuàng)立表。A、創(chuàng)立數(shù)據(jù)設(shè)備disk initname='zg'數(shù)據(jù)庫設(shè)備名physname='c:zgzg.dat' 數(shù)據(jù)庫文件所在途徑vdevno=8數(shù)據(jù)庫設(shè)備的標(biāo)識號size=5120數(shù)據(jù)庫設(shè)備大小(10M)B、建立zg表use zg_datacreate table zg ( bh char(4) null, xm char(8) null, xb char(2) null, nl int null

6、, zw char(10) null,gzsj datatime null, jl text null, zp image null ) 建立表go(2)、在客戶機(jī)上啟動Foxpro,用USE命令翻開需轉(zhuǎn)換的.dbf文件,用COPY命令將.dbf文件中數(shù)據(jù)轉(zhuǎn)換成標(biāo)準(zhǔn)的文本文件.txt,命令如下:use zg.dbfcopy all to zg.txt deli with blan(3)、從客戶機(jī)登錄到Windows NT效勞器上,將zg.txt文件拷貝到效勞器的職工庫目錄c:zg下。(4)、在效勞器上,由Windows NT進(jìn)入到MS-DOS狀態(tài),然后執(zhí)行bcp將數(shù)據(jù)從zg.txt轉(zhuǎn)換到SQL

7、表,命令格式如下:bcp zg in zg.txt /c /s mainserver /u manager /P 0001 (mainserver為效勞器名,manager為用戶名,0001為用戶口令。該轉(zhuǎn)換方法速度較快,不占用效勞器上事務(wù)日志空間。但較為復(fù)雜、繁鎖,操作者必須純熟掌握Foxpro、SQL Server的命令和操作,而且無法將Foxpro的Memo、General字段轉(zhuǎn)換到SQL Server表。3、用Foxpro for Window 2.5 編程實現(xiàn)轉(zhuǎn)換"用Foxpro編程實現(xiàn)數(shù)據(jù)轉(zhuǎn)換"即通過SQL Server提供的ODBC接口開放數(shù)據(jù)庫接口及Foxp

8、r提供ODBC接口工具Connectivity Kit fpsql.fll,建立SQL與Foxpro的連接,由Foxpro向SQL Server提交創(chuàng)立表命令,然后將.dbf的每條記錄,串成一個字符串,將插入命令連同字符串提交給SQL Server,完成數(shù)據(jù)轉(zhuǎn)換。實現(xiàn)步驟:(1)、ODBC的設(shè)置:在客戶機(jī)上啟動Windows for group,進(jìn)入Windows的控制面板( Control panel )。雙擊ODBC圖標(biāo),進(jìn)展zg數(shù)據(jù)庫的ODBC驅(qū)動設(shè)置。選擇"Add"增加新的ODBC驅(qū)動接口,在Install ODBC drivers項選擇"SQL Serv

9、er",按"OK",彈出"ODBC SQL Server Setup"窗口,在 Data source name項中輸入"zg_data",Server項輸入"mainserver",按"OK"完成設(shè)置。(2)、采用上述方法一中步驟1的、創(chuàng)立zg數(shù)據(jù)庫設(shè)備及數(shù)據(jù)庫,然后執(zhí)行Foxpro程序crea_table,創(chuàng)立一個構(gòu)造與.dbf構(gòu)造一樣的SQL Server表。程序清單如下:crea_table.prg 程序清單set talk offclose allclear allclear

10、store "" to dbf_name dbf_name 待轉(zhuǎn)換的.dbf數(shù)據(jù)庫store "" to sql_db sql_db目的SQL數(shù)據(jù)庫store "" to sql_com sql_com向SQL Server提交的命令store "" to sql_title sql_title 為向SQL Server提交命令字頭store 0 to handle handle 為Foxpro與SQL Server連接的標(biāo)識store 0 to success success為命令提交成功與否的標(biāo)識set lib

11、r to fpsql.fll2,20 say "請輸入要轉(zhuǎn)換的數(shù)據(jù)庫(dbf)名:" get dbf_name3,20 say "請輸入目的SQL數(shù)據(jù)庫名:" get sql_dbreaddbf_name=allt(dbf_name)sql_db=allt(sql_db)handle=dbconnect(sql_db, "sa","") 建立Foxpro與SQL Server連接if handle0 假設(shè)連接成功那么use dbf_name as op_dbf in 0以op_dbf為別名翻開待轉(zhuǎn)換數(shù)據(jù)庫sele

12、op_dbfcopy to db_stru stru exte 將其數(shù)據(jù)構(gòu)造拷貝生成db_stru庫use db_stru in 0sele db_strugoto topsql_com="creat table "+dbf_name+"( "do while .not. eof()sql_com=sql_com+field_name+" "do casecase field_type="C"sql_com=sql_com+"char ("+;allt(str(field_len)+ "

13、;)"case field_type="N"if field_dec=0if field_len8sql_com=sql_com+"int "elsesql_com=aql_com+"float "endifelsesql_com=sql_com+"float "endifcase field_type="D"sql_com=sql_com+"datatime "case field_type="M"sql_com=sql_com+"t

14、ext "case field_type="G"sql_com=sql_com+"binary "endcaseskipif .not.eof()sql_com=sql_com+","endifenddosql_com=aql_com+" )"success=dbexec(handle,sql_com)if successwait wind "SQL Server表已建立成功! "elsewait wind "SQL Server表建立失敗! "endifclose

15、 allclear allretuelse 假設(shè)連接不成功wait wind "對不起,輸入?yún)?shù)錯誤,無法連接SQL Server'clear readretuendif(3)、再執(zhí)行Foxpro程序conv_data將數(shù)據(jù)由.dbf傳輸?shù)絊QL Server表中。conv_data.prg 程序清單conv_data.prg 程序清單set talk offclose allclear allclearstore "" to dbf_namedbf_name待轉(zhuǎn)換的.dbf數(shù)據(jù)庫store "" to sql_dbsql_db目的SQ

16、L數(shù)據(jù)庫store "" to sql_comsql_com向SQL Server提交的命令store "" to fnamefname字段名store 0 to handlehandle Foxpro與SQL Server連接的標(biāo)識store 0 to successsuccess命令提交成功與否的標(biāo)識set libr to fpsql.fll2,20 say "請輸入要轉(zhuǎn)換的數(shù)據(jù)庫(dbf)名:" get dbf_name3,20 say "請輸入目的SQL數(shù)據(jù)庫名:" get sql_dbreaddbf_na

17、me=allt(dbf_name)sql_db=allt(sql_db)handle=dbconnect(sql_db, "sa","")建立Foxpro與SQL Server連接if handle0 假設(shè)連接成功那么use dbf_name as op_dbf in 0以op_dbf為別名翻開待轉(zhuǎn)換數(shù)據(jù)庫sele op_dbfcopy to db_stru stru exte將其數(shù)據(jù)構(gòu)造拷貝生成db_stru庫use db_stru in 0sele db_strugoto topsql_title="insert into "+d

18、bf_name+" ( "do while .not.eof()sql_title=sql_title+field_nameskipif .not.eof()sql_title=sql_title+","elsesql_title=sql_title+" ) values ('"endifenddosele op_dbfgoto topdo while .not.eof()sql_com=sql_titlesele db_strugoto topdo while .not.eof()fname=field_namedo cas

19、ecase field_type="C"sql_com=sql_com+fnamecase field_type="N"sql_com=sql_com+"convert(int(8),'"+str(*fname)+"')"case field_type="M"sql_com=sql_com+'null'case field_type="G"sql_com=sql_com+'null'endcaseskipif .not.eof(

20、)sql_com=sql_com+"','"elsesql_com=aql_com+"')"endifenddosuccess=dbexec(handle,sql_com)sele op_dbfskipenddoelse 假設(shè)連接不成功wait wind "對不起,輸入?yún)?shù)錯誤,無法連接SQL Server"clear readretuendif使用上述方法,只要知道一些簡單的SQL Server操作及Foxpro編程便可實現(xiàn)將.dbf數(shù)據(jù)轉(zhuǎn)換到SQL Server。運(yùn)行程序然后輸入待轉(zhuǎn)換的數(shù)據(jù)庫名,及目的數(shù)據(jù)

21、庫名就可實現(xiàn)轉(zhuǎn)換,快捷方便。但缺乏的是,該方法在原數(shù)據(jù)庫.dbf含有Memo、General字段時,轉(zhuǎn)換就比較困難,目前尚沒有找到有效的解決方法。4、用第三方數(shù)據(jù)庫軟件Access進(jìn)展轉(zhuǎn)換Access是Microsoft公司的數(shù)據(jù)庫開發(fā)軟件,使用Access提供的數(shù)據(jù)輸入Inport/輸出Export的功能及ODBC接口,可直接將數(shù)據(jù)構(gòu)造及數(shù)據(jù)轉(zhuǎn)送到SQL Server。實現(xiàn)步驟:(2)、然后在Windows for Workgroup中啟動Access,在File菜單中選擇"new"創(chuàng)立一個新的Access數(shù)據(jù)庫,然后在File菜單中選擇"Attach tabl

22、e"連接zg.dbf數(shù)據(jù)庫。(3)、在"Attach"窗口的"Data source"欄中選擇數(shù)據(jù)庫源為Foxpro 2.5,按"OK",之后彈出"Select Microsoft Access Database"窗口,在該窗口選擇要轉(zhuǎn)換的.dbf數(shù)據(jù)庫zg.dbf,按"OK"完畢,然后按"Close"完成數(shù)據(jù)庫連接。(4)、在File菜單中選擇"Export"輸出數(shù)據(jù),在"Export"窗口選擇目的數(shù)據(jù)庫類型"SQL Server"按"OK"進(jìn)入下一窗口"Select Microsoft Access Object",在"Object in DB1"欄選擇要轉(zhuǎn)換的數(shù)據(jù)庫zg, 在窗口的"View"欄下選擇"Table"項,按"OK"。(5)、進(jìn)入"Export"窗口,在"Export zg to"

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論