網域查詢: www.
返回首頁
當前位置: 首頁 > 站長學院 > 數據庫 > MSSQL >

如何將DBF數據庫轉換成表

時間:2010-02-17 17:17來源: 作者: 點擊:
1、前言 隨著計算機技術的發展,客戶機/服務器(Client/Server)體系結構的數據庫系統應用越來越廣泛,而Foxbase、Foxpro是我國近階段使用較廣的數據庫開發軟件,很多數據都存在DBF表中,
  

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。


頂一下
(0)
0%
踩一下
(0)
0%
------分隔線----------------------------
最新評論 查看所有評論
發表評論 查看所有評論
請自覺遵守互聯網相關的政策法規,嚴禁發佈色情、暴力、反動的言論。
評價:
表情:
用戶名: 密碼: 驗證碼:
推薦內容