實現(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)容
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)、啟動服務(wù)器,進入Window NT,SQL Server 6.0,打開SQL Enterprise Manager為單位職工庫創(chuàng)建一個數(shù)據(jù)庫設(shè)備zg.dat,然后在該設(shè)備上建立zg數(shù)據(jù)庫及表(Table),表的數(shù)據(jù)結(jié)構(gòu)要與zg.dbf的數(shù)據(jù)結(jié)構(gòu)一致?;蛴靡韵耂QL Server命令創(chuàng)建設(shè)備和創(chuàng)建表。
---- (2)、在客戶機上啟動Foxpro,用USE命令打開需轉(zhuǎn)換的.dbf文件,用COPY命令將.dbf文件中數(shù)據(jù)轉(zhuǎn)換成標(biāo)準的文本文件.txt
---- (3)、從客戶機登錄到Windows NT服務(wù)器上,將zg.txt文件拷貝到服務(wù)器的職工庫目錄c:\\zg下。
---- (4)、在服務(wù)器上,由Windows NT進入到MS-DOS狀態(tài),然后執(zhí)行bcp將數(shù)據(jù)從zg.txt轉(zhuǎn)換到SQL表,命令格式如下:
---- bcp zg in zg.txt /c /s mainserver /u manager /P 0001 (mainserver為服務(wù)器名,manager為用戶名,0001為用戶口令)。
---- 該轉(zhuǎn)換方法速度較快,不占用服務(wù)器上事務(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ù)庫接口)及Foxpr提供ODBC接口工具Connectivity Kit (fpsql.fll),建立SQL與Foxpro的連接,由Foxpro向SQL Server提交創(chuàng)建表命令,然后將.dbf的每條記錄,串成一個字符串,將插入命令連同字符串提交給SQL Server,完成數(shù)據(jù)轉(zhuǎn)換。
---- 實現(xiàn)步驟:
---- (1)、設(shè)置 ODBC
---- (2)、采用上述方法一中步驟1的⑴、⑵創(chuàng)建zg數(shù)據(jù)庫設(shè)備及數(shù)據(jù)庫,然后執(zhí)行Foxpro程序crea_table,創(chuàng)建一個結(jié)構(gòu)與.dbf結(jié)構(gòu)相同的SQL Server表。
---- (3)、再執(zhí)行Foxpro程序conv_data將數(shù)據(jù)由.dbf傳輸?shù)絊QL Server表中。
---- 使用上述方法,只要知道一些簡單的SQL Server操作及Foxpro編程便可實現(xiàn)將.dbf數(shù)據(jù)轉(zhuǎn)換到SQL Server。運行程序然后輸入待轉(zhuǎn)換的數(shù)據(jù)庫名,及目的數(shù)據(jù)庫名就可實現(xiàn)轉(zhuǎn)換,快捷方便。但不足的是,該方法在原數(shù)據(jù)庫.dbf含有Memo、General字段時,轉(zhuǎn)換就比較困難,目前尚沒有找到有效的解決方法。
---- 4、用第三方數(shù)據(jù)庫軟件Access進行轉(zhuǎn)換
---- Access是Microsoft公司的數(shù)據(jù)庫開發(fā)軟件,使用Access提供的數(shù)據(jù)輸入(Inport)/輸出(Export)的功能及ODBC接口,可直接將數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)轉(zhuǎn)送到SQL Server。
---- 實現(xiàn)步驟:
---- (1)、按方法二中的第1、2步驟完成數(shù)據(jù)庫設(shè)備、數(shù)據(jù)庫創(chuàng)建和ODBC接口的設(shè)置。
---- (2)、然后在Windows for Workgroup中啟動Access,在File菜單中選擇“new”創(chuàng)建一個新的Access數(shù)據(jù)庫,然后在File菜單中選擇”Attach table”連接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,按”O(jiān)K”結(jié)束,然后按“Close”完成數(shù)據(jù)庫連接。
---- (4)、在File菜單中選擇“Export”輸出數(shù)據(jù),在“Export”窗口選擇目標(biāo)數(shù)據(jù)庫類型“”按“OK”進入下一窗口“Select Microsoft Access Object”,在“Object in DB1”欄選擇要轉(zhuǎn)換的數(shù)據(jù)庫zg, 在窗口的“View”欄下選擇“Table”項,,按“OK”。
---- (5)、進入“Export”窗口,在“Export zg to”欄目下輸入目的數(shù)據(jù)庫名zg,按“OK”。進入“SQL Data Sources”窗口,在“Select Data Source”,選擇在ODBC中定義好的zg數(shù)據(jù)源,按“OK”
---- (6)、進入“SQL Server login”窗口,在“Login ID:”欄中輸入登錄用戶名“sa”,在“Password”欄中若有登錄口令則輸入口令。否則按“OK”開始進行數(shù)據(jù)轉(zhuǎn)換。
---- 使用該方法用戶不需要深入了解Foxpro命令及SQL Server命令,也不須深入了解Access操作,更不需對.dbf數(shù)據(jù)庫的數(shù)據(jù)結(jié)構(gòu)進行分析,Access可根據(jù)原.dbf數(shù)據(jù)庫的結(jié)構(gòu)自動在SQL Server上創(chuàng)建一個結(jié)構(gòu)相同的表,并且可將原.dbf數(shù)據(jù)庫中不論是字符型、數(shù)字型、日期型、Memo型、General型的所有數(shù)據(jù)轉(zhuǎn)換到SQL Server表中。該方法可以簡單、方便快捷、完整地將所有.dbf中的數(shù)據(jù)的轉(zhuǎn)換到SQL Server。
---- 但使用該方法要注意一點,若要轉(zhuǎn)換的數(shù)據(jù)量很大時,SQL Server中分配給該數(shù)據(jù)庫的日志設(shè)備要足夠大,或可在SQL Server中的ISQL/w命令窗口中用以下命令進行監(jiān)控,并及時清除。
dbcc sqlperf (logspace) 檢查事務(wù)日志空間的使用量
dump transaction zg with truncate_only 清除事務(wù)日志中已完成任務(wù)的數(shù)據(jù)
---- 5、結(jié)束語
---- 以上三種方法運行環(huán)境服務(wù)器端網(wǎng)絡(luò)操作系統(tǒng)為Window NT 4.0,網(wǎng)絡(luò)數(shù)據(jù)庫為SQL Server 6.5,客戶機Windows 95,F(xiàn)oxpro for Window 2.6,Access 97。方法二、方法三均通過ODBC數(shù)據(jù)接口進行數(shù)據(jù)轉(zhuǎn)換。因此,這兩種方法對Oracal、Sybase等數(shù)據(jù)庫也可適用,只要對Windows中的ODBC數(shù)據(jù)接口設(shè)置作些改動,我們也可將.dbf的數(shù)據(jù)轉(zhuǎn)換到Oracal或Sybase的表中。以此類推,只要數(shù)據(jù)庫提供了ODBC功能,使用上述方法二、方法三均可實現(xiàn)兩種數(shù)據(jù)庫之間的數(shù)據(jù)轉(zhuǎn)換。
---- 我們以Foxpro的數(shù)據(jù)庫結(jié)構(gòu)的單位職工庫(zg.dbf)為例,進行數(shù)據(jù)轉(zhuǎn)換。其數(shù)據(jù)結(jié)構(gòu)為:
字段名 類型 字段長度 小數(shù)點位數(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)、啟動服務(wù)器,進入Window NT,SQL Server 6.0,打開SQL Enterprise Manager為單位職工庫創(chuàng)建一個數(shù)據(jù)庫設(shè)備zg.dat,然后在該設(shè)備上建立zg數(shù)據(jù)庫及表(Table),表的數(shù)據(jù)結(jié)構(gòu)要與zg.dbf的數(shù)據(jù)結(jié)構(gòu)一致?;蛴靡韵耂QL Server命令創(chuàng)建設(shè)備和創(chuàng)建表。
---- (2)、在客戶機上啟動Foxpro,用USE命令打開需轉(zhuǎn)換的.dbf文件,用COPY命令將.dbf文件中數(shù)據(jù)轉(zhuǎn)換成標(biāo)準的文本文件.txt
---- (3)、從客戶機登錄到Windows NT服務(wù)器上,將zg.txt文件拷貝到服務(wù)器的職工庫目錄c:\\zg下。
---- (4)、在服務(wù)器上,由Windows NT進入到MS-DOS狀態(tài),然后執(zhí)行bcp將數(shù)據(jù)從zg.txt轉(zhuǎn)換到SQL表,命令格式如下:
---- bcp zg in zg.txt /c /s mainserver /u manager /P 0001 (mainserver為服務(wù)器名,manager為用戶名,0001為用戶口令)。
---- 該轉(zhuǎn)換方法速度較快,不占用服務(wù)器上事務(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ù)庫接口)及Foxpr提供ODBC接口工具Connectivity Kit (fpsql.fll),建立SQL與Foxpro的連接,由Foxpro向SQL Server提交創(chuàng)建表命令,然后將.dbf的每條記錄,串成一個字符串,將插入命令連同字符串提交給SQL Server,完成數(shù)據(jù)轉(zhuǎn)換。
---- 實現(xiàn)步驟:
---- (1)、設(shè)置 ODBC
---- (2)、采用上述方法一中步驟1的⑴、⑵創(chuàng)建zg數(shù)據(jù)庫設(shè)備及數(shù)據(jù)庫,然后執(zhí)行Foxpro程序crea_table,創(chuàng)建一個結(jié)構(gòu)與.dbf結(jié)構(gòu)相同的SQL Server表。
---- (3)、再執(zhí)行Foxpro程序conv_data將數(shù)據(jù)由.dbf傳輸?shù)絊QL Server表中。
---- 使用上述方法,只要知道一些簡單的SQL Server操作及Foxpro編程便可實現(xiàn)將.dbf數(shù)據(jù)轉(zhuǎn)換到SQL Server。運行程序然后輸入待轉(zhuǎn)換的數(shù)據(jù)庫名,及目的數(shù)據(jù)庫名就可實現(xiàn)轉(zhuǎn)換,快捷方便。但不足的是,該方法在原數(shù)據(jù)庫.dbf含有Memo、General字段時,轉(zhuǎn)換就比較困難,目前尚沒有找到有效的解決方法。
---- 4、用第三方數(shù)據(jù)庫軟件Access進行轉(zhuǎn)換
---- Access是Microsoft公司的數(shù)據(jù)庫開發(fā)軟件,使用Access提供的數(shù)據(jù)輸入(Inport)/輸出(Export)的功能及ODBC接口,可直接將數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)轉(zhuǎn)送到SQL Server。
---- 實現(xiàn)步驟:
---- (1)、按方法二中的第1、2步驟完成數(shù)據(jù)庫設(shè)備、數(shù)據(jù)庫創(chuàng)建和ODBC接口的設(shè)置。
---- (2)、然后在Windows for Workgroup中啟動Access,在File菜單中選擇“new”創(chuàng)建一個新的Access數(shù)據(jù)庫,然后在File菜單中選擇”Attach table”連接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,按”O(jiān)K”結(jié)束,然后按“Close”完成數(shù)據(jù)庫連接。
---- (4)、在File菜單中選擇“Export”輸出數(shù)據(jù),在“Export”窗口選擇目標(biāo)數(shù)據(jù)庫類型“”按“OK”進入下一窗口“Select Microsoft Access Object”,在“Object in DB1”欄選擇要轉(zhuǎn)換的數(shù)據(jù)庫zg, 在窗口的“View”欄下選擇“Table”項,,按“OK”。
---- (5)、進入“Export”窗口,在“Export zg to”欄目下輸入目的數(shù)據(jù)庫名zg,按“OK”。進入“SQL Data Sources”窗口,在“Select Data Source”,選擇在ODBC中定義好的zg數(shù)據(jù)源,按“OK”
---- (6)、進入“SQL Server login”窗口,在“Login ID:”欄中輸入登錄用戶名“sa”,在“Password”欄中若有登錄口令則輸入口令。否則按“OK”開始進行數(shù)據(jù)轉(zhuǎn)換。
---- 使用該方法用戶不需要深入了解Foxpro命令及SQL Server命令,也不須深入了解Access操作,更不需對.dbf數(shù)據(jù)庫的數(shù)據(jù)結(jié)構(gòu)進行分析,Access可根據(jù)原.dbf數(shù)據(jù)庫的結(jié)構(gòu)自動在SQL Server上創(chuàng)建一個結(jié)構(gòu)相同的表,并且可將原.dbf數(shù)據(jù)庫中不論是字符型、數(shù)字型、日期型、Memo型、General型的所有數(shù)據(jù)轉(zhuǎn)換到SQL Server表中。該方法可以簡單、方便快捷、完整地將所有.dbf中的數(shù)據(jù)的轉(zhuǎn)換到SQL Server。
---- 但使用該方法要注意一點,若要轉(zhuǎn)換的數(shù)據(jù)量很大時,SQL Server中分配給該數(shù)據(jù)庫的日志設(shè)備要足夠大,或可在SQL Server中的ISQL/w命令窗口中用以下命令進行監(jiān)控,并及時清除。
dbcc sqlperf (logspace) 檢查事務(wù)日志空間的使用量
dump transaction zg with truncate_only 清除事務(wù)日志中已完成任務(wù)的數(shù)據(jù)
---- 5、結(jié)束語
---- 以上三種方法運行環(huán)境服務(wù)器端網(wǎng)絡(luò)操作系統(tǒng)為Window NT 4.0,網(wǎng)絡(luò)數(shù)據(jù)庫為SQL Server 6.5,客戶機Windows 95,F(xiàn)oxpro for Window 2.6,Access 97。方法二、方法三均通過ODBC數(shù)據(jù)接口進行數(shù)據(jù)轉(zhuǎn)換。因此,這兩種方法對Oracal、Sybase等數(shù)據(jù)庫也可適用,只要對Windows中的ODBC數(shù)據(jù)接口設(shè)置作些改動,我們也可將.dbf的數(shù)據(jù)轉(zhuǎn)換到Oracal或Sybase的表中。以此類推,只要數(shù)據(jù)庫提供了ODBC功能,使用上述方法二、方法三均可實現(xiàn)兩種數(shù)據(jù)庫之間的數(shù)據(jù)轉(zhuǎn)換。