1、前言 隨著計算機技術的發展,客戶機/服務器(Client/Server)體系結構的數據庫系統應用越來越廣泛,而Foxbase、Foxpro是我國近階段使用較廣的數據庫開發軟件,很多數據都存在DBF表中,本文將介紹如何將DBF表中的數據轉換到SQL Server表中。
2、用Visual Basic編程實現轉換 用Visual Basic編程實現轉換,即通過SQL Server提供的ODBC接口(開放數據庫接口)及Visual Basic中應用數據訪問,建立Visual Basic與SQL Server的連接,由Visual Basic向SQL Server提交創建表命令,然後將.dbf的每條記錄提交給SQL Server,完成數據轉換。DBF的數據結構是(examp1.dbf)︰

實現步驟︰
(1)在數據庫服務器”sqlserver1”中建立數據庫sqlexample,建立一個表”example1”,其結構與examp1.dbf結構相同。其結構是︰

(2)、ODBC的設置︰在客戶機上進入Windows的控制面板( Control panel )。雙擊ODBC數據源(32位)圖標,進行數據庫的ODBC驅動設置。在用戶DSN下,按“添加”,選擇SQL Server,在名稱輸入”sql1”,服務器輸入”sqlserver1”,用戶名輸入”sa”,口令輸入”123456”,測試是否連通。
(3)、在Visual Basic建立一工程,添加“引用”Microsoft ActiveXData Objects2.1 Library和Microsoft DAO 3.51 object library。在Form1上建一個Command1,將Command1的Caption改為轉換。 程序清單如下︰
Private Sub Command1_Click()
Dim db As Database
Dim tb As Recordset
‘打開C:examp1.dbf
Set db=OpenDatabase(c:,False,False,”foxpro 2.5”)
Set tb=db.OpenRecordset(examp1)
Dim conn1 As ADODB.Connection
Dim cmd1 As ADODB.Command
Set conn1=New ADODB.Connection
Set cmd1=New ADODB.Command
cons1=”ODBC;DATABASE=sqlexample;UID=sa;PWD=123456;DSN=sql1”
conn1.Open cons1
Set cmd1.ActiveConnection=conn1
Do while not tb.EOF
Cmds1=”insert into example1 values(‘“& tb.Fields(0) &”’,‘“& tb.Fields(1)
&”’)”
cmd1.CommandText=cmds1
cmd1.Execute
tb.MoveNext
Loop
MsgBox“載入完畢”,,”提示”
Cnn1.Close
Unload me
End Sub
使用上述方法,只要知道一些簡單的SQL Server操作及Visual Basic編程便可實現將DBF中的數據載入到SQL Server中。但存在不足之處,如果DBF中數據量很大,超過幾十萬條記錄時,載入的時間將會很長。解決大批量數據載入,需要用到SQL Server所提供的塊拷貝實用程序(bcp)
3、利用SQL Server所提供的塊拷貝實用程序(bcp)載入數據
實用程序bcp.exe可從Mssql7目錄下的Binn子目錄下獲得。
3.1、bcp的命令格式及主要參數
主要參數︰
dbtable 數據庫名
in|out in從文件到數據庫表的拷貝。
out從數據庫表到文件拷貝。
datafile 操作系統文件的路徑。
/f 文件格式。
/u username 指定登錄用戶名。
/P password 指定一個口令。
/S servername 允許用戶指定連接到哪個SQL Server
3.2、實現轉換的具體方法 我們將上面的例子,調用Bcp,將數據載入到SQL Server數據庫中。先在目錄下建立一個文件,名為exam.fmt,其中exam.fmt的內容為︰
1 SQLCHAR 0 4 "" 1 Id
2 SQLCHAR 0 20 "" 2 name
在Visual Basic中建立一工程,在Form1上在Form1上建一個Command1,將Command1的Caption改為轉換。 程序清單如下︰
Private Sub Command1_Click()
bcp1=”bcp.exe sqlexample..example1 in‘
:examp1.dbf’ /S sqlserver1 /U sa
/P 123456 /f exam.fmt”
ok1=Shell(bcp1,0)
End Sub 該方法可以用較短的時間將大量數據載入到SQL Server數據庫中。但也有其缺點,靈活性較差,使用較為繁瑣。
4、使用軟件工具實行數據載入
應用Visual Basic中的外接程序中的可視化數據管理器(VisData)進行數據加載。 實現步驟︰
(1)、SQL Server數據庫,DBF文件如上。
(2)、在Visual Basic中啟動VisData,在”文件”菜單中選擇“打開數據庫”,選擇Foxpro2.5,然後打開examp1.dbf數據庫。
(3)、在”文件”菜單中選擇”導入/導出”,選擇目標數據庫類型“ODBC”按“導出”進入下一窗口“選擇DSN”,選中sql1,執行。
(4)、在“Login ID:”欄中輸入登錄用戶名“sa”,在“Password”欄中若有登錄口令則輸入123456,開始進行數據轉換。 應用SQL Server中的數據轉換服務(DTS)將數據導入或導出。
DTS提供了數據傳送功能,例如輸入、輸出以及在微軟的SQL Server和任何OLE DB、ODBC或者文本格式之間傳送數據。在SQL Server7.0中,你可以利用DTS向導,把DBF文件的數據傳送到SQL Server數據庫中。因為有DTS向導,在這不詳細講解了。 使用這些方法可以簡單、方便快捷、完整地將所有.dbf中的數據的轉換到SQL Server。但也有不便之處,必須手工完成操作。若要轉換的數據量很大時,使用的時間較長。
5、結束語
以上幾種方法運行環境服務器端網絡操作系統為Window NT 4.0,網絡數據庫為SQL Server 7.0,客戶機Windows 98,Visual Basic 6.0。

