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

下載本文檔

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

文檔簡(jiǎn)介

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

2、racal、Sybase等客戶(hù)機(jī)/效勞器Client/Server體系構(gòu)造的數(shù)據(jù)庫(kù)系統(tǒng)進(jìn)展信息系統(tǒng)的開(kāi)發(fā)、更新改造已成為當(dāng)前一大趨勢(shì)。而Dbase、Foxbase、Foxpro是我國(guó)近年應(yīng)用較為廣泛的數(shù)據(jù)庫(kù)開(kāi)發(fā)軟件,許多單位、部門(mén)多年來(lái)積累了大量的珍貴的數(shù)據(jù)資料,這些部門(mén)在進(jìn)展計(jì)算機(jī)信息系統(tǒng)改造、更新的同時(shí),面臨如何繼承大量歷史數(shù)據(jù)的問(wèn)題,本文介紹三種將DBF數(shù)據(jù)轉(zhuǎn)換成SQL Server表的方法。2、利用SQL Server所提供的塊拷貝實(shí)用程序bcp轉(zhuǎn)換實(shí)用程序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ù)庫(kù)名in|out in從文件到數(shù)據(jù)庫(kù)表的拷貝。out從數(shù)據(jù)庫(kù)表到文件拷貝。datafile操作系統(tǒng)文件的途徑。該途徑的長(zhǎng)度可以是1255個(gè)字符。也可指明磁盤(pán)驅(qū)動(dòng)器名字。/C 用字符類(lèi)型作為缺省值執(zhí)行拷貝操作。/u login

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

5、一個(gè)數(shù)據(jù)庫(kù)設(shè)備zg.dat,然后在該設(shè)備上建立zg數(shù)據(jù)庫(kù)及表(Table),表的數(shù)據(jù)構(gòu)造要與zg.dbf的數(shù)據(jù)構(gòu)造一致?;蛴靡韵耂QL Server命令創(chuàng)立設(shè)備和創(chuàng)立表。A、創(chuàng)立數(shù)據(jù)設(shè)備disk initname='zg'數(shù)據(jù)庫(kù)設(shè)備名physname='c:zgzg.dat' 數(shù)據(jù)庫(kù)文件所在途徑vdevno=8數(shù)據(jù)庫(kù)設(shè)備的標(biāo)識(shí)號(hào)size=5120數(shù)據(jù)庫(kù)設(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)、在客戶(hù)機(jī)上啟動(dòng)Foxpro,用USE命令翻開(kāi)需轉(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)、從客戶(hù)機(jī)登錄到Windows NT效勞器上,將zg.txt文件拷貝到效勞器的職工庫(kù)目錄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為用戶(hù)名,0001為用戶(hù)口令。該轉(zhuǎn)換方法速度較快,不占用效勞器上事務(wù)日志空間。但較為復(fù)雜、繁鎖,操作者必須純熟掌握Foxpro、SQL Server的命令和操作,而且無(wú)法將Foxpro的Memo、General字段轉(zhuǎn)換到SQL Server表。3、用Foxpro for Window 2.5 編程實(shí)現(xiàn)轉(zhuǎn)換"用Foxpro編程實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換"即通過(guò)SQL Server提供的ODBC接口開(kāi)放數(shù)據(jù)庫(kù)接口及Foxp

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

9、er",按"OK",彈出"ODBC SQL Server Setup"窗口,在 Data source name項(xiàng)中輸入"zg_data",Server項(xiàng)輸入"mainserver",按"OK"完成設(shè)置。(2)、采用上述方法一中步驟1的、創(chuàng)立zg數(shù)據(jù)庫(kù)設(shè)備及數(shù)據(jù)庫(kù),然后執(zhí)行Foxpro程序crea_table,創(chuàng)立一個(gè)構(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ù)庫(kù)store "" to sql_db sql_db目的SQL數(shù)據(jù)庫(kù)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)識(shí)store 0 to success success為命令提交成功與否的標(biāo)識(shí)set lib

11、r to fpsql.fll2,20 say "請(qǐng)輸入要轉(zhuǎn)換的數(shù)據(jù)庫(kù)(dbf)名:" get dbf_name3,20 say "請(qǐng)輸入目的SQL數(shù)據(jù)庫(kù)名:" 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為別名翻開(kāi)待轉(zhuǎn)換數(shù)據(jù)庫(kù)sele

12、op_dbfcopy to db_stru stru exte 將其數(shù)據(jù)構(gòu)造拷貝生成db_stru庫(kù)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 "對(duì)不起,輸入?yún)?shù)錯(cuò)誤,無(wú)法連接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ù)庫(kù)store "" to sql_dbsql_db目的SQ

16、L數(shù)據(jù)庫(kù)store "" to sql_comsql_com向SQL Server提交的命令store "" to fnamefname字段名store 0 to handlehandle Foxpro與SQL Server連接的標(biāo)識(shí)store 0 to successsuccess命令提交成功與否的標(biāo)識(shí)set libr to fpsql.fll2,20 say "請(qǐng)輸入要轉(zhuǎn)換的數(shù)據(jù)庫(kù)(dbf)名:" get dbf_name3,20 say "請(qǐng)輸入目的SQL數(shù)據(jù)庫(kù)名:" 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為別名翻開(kāi)待轉(zhuǎn)換數(shù)據(jù)庫(kù)sele op_dbfcopy to db_stru stru exte將其數(shù)據(jù)構(gòu)造拷貝生成db_stru庫(kù)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 "對(duì)不起,輸入?yún)?shù)錯(cuò)誤,無(wú)法連接SQL Server"clear readretuendif使用上述方法,只要知道一些簡(jiǎn)單的SQL Server操作及Foxpro編程便可實(shí)現(xiàn)將.dbf數(shù)據(jù)轉(zhuǎn)換到SQL Server。運(yùn)行程序然后輸入待轉(zhuǎn)換的數(shù)據(jù)庫(kù)名,及目的數(shù)據(jù)

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

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論