DBF表與SQL Server表的導入、導出

----------Dbf 導入 Sql Server----------

以下均以SQL2000VFP6及以上的表為例



代碼導入:查詢分析器中執行如下語句(先選擇對應的資料庫)

-------------
如果接受導入資料的SQL表已存在


--
如果接受導入資料的SQL表已經存在
Insert Into
已經存在的SQL表名 Select * From openrowset('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:','select * from aa.DBF')

--
也可以對應列名進行導入,如:

Insert Into
已經存在的SQL表名 (列名1,列名2...) Select (對應列名1,對應列名2...) From openrowset('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:','select * from aa.DBF')


-------------
如果接受導入資料的SQL表不存在,導入時創建


--
方法一:有一個缺點:把DBF表導入SQL Server中後,馬上用VISUAL FOXPRO打開DBF表,會提示不能存取檔,即這個表還被SQL打開著呢。可是過了1分鐘左右,再打開DBF表就可以了,說明經過一段時間後查詢分析器才把這個表關閉。
Select * Into
要生成的SQL表名 From openrowset('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:','select * from dbf表名.DBF')

--
方法二:有一個缺點:把DBF表導入SQL Server中後,馬上用VISUAL FOXPRO打開DBF表,會提示不能存取檔,即這個表還被SQL打開著呢。可是過了1分鐘左右,再打開DBF表就可以了,說明經過一段時間後查詢分析器才把這個表關閉。

Select * Into TEMP1 From openrowset('VFPOLEDB.1','C:';'admin';'' ,'select * from dbf
表名.DBF')
--
如果沒有安裝VFP,需要把vfpoledb.dll拷貝到SYSTEM目錄下,並註冊。


--
方法三:導入SQL SERVER後,源表再用VFP打開就不提示不能存取檔,說明語句執行後就把源表關閉了。不過也有不盡人意的地方,就是用前兩種方式導入後,源表中的字元型欄位導入後SQL表字段對應變成NVARCHAR了。
Select * Into
要生成的SQL表名 From OPENROWSET('MICROSOFT.JET.OLEDB.4.0','dBase IV;HDR=NO;IMEX=2;DATABASE=c:','select * from dbf表名.dbf')

--
方法四:導入SQL SERVER後,源表再用VFP打開就不提示不能存取檔,說明語句執行後就把源表關閉了。不過也有不盡人意的地方,就是用前兩種方式導入後,源表中的字元型欄位導入後SQL表字段對應變成NVARCHAR了。

Select * Into
要生成的SQL表名 From OPENROWSET('MICROSOFT.JET.OLEDB.4.0','dBase III;HDR=NO;IMEX=2;DATABASE=c:','select * from dbf表名.dbf')

--
方法五:用BDE驅動導入時,再用VFP打開源表時不會提示不能存取檔

Select * From OPENROWSET('MSDASQL','CollatingSequence=ASCII;DBQ=D:SEND;DefaultDir=D:SEND;Deleted=0;Driver={Driver do Microsoft dBase (*.dbf)};FIL=dBase 5.0','select * from dbf
表名
.DBF') A
--
前提:先在機器上安裝BDE的驅動


--
也可以只導幾個欄位
Select * Into
要生成的SQL表名 From openrowset('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:','select 欄位1,欄位2 from aa.DBF')

/*
說明
:
SourceDB=c:    c:
dbf檔的存放目錄

aa.Dbf       
dbf檔案名
*/

工具導入1:通過SQL Server導入導出資料工具(DTS

1
、建立Visual FoxPro的資料源:

ODBC中建立一個Visual FoxPro的資料源(ODBC-Microsoft Visual FoxPro Driver)的步驟如下:
打開ODBC配製視窗 ->
選擇用戶DSN”頁面或系統DSN”頁面,建議用後者
->
點擊添加按鈕
->
選擇“Microsoft Visual FoxPro Driver”這個驅動
->
Data Source Name(數源源名稱)處輸入此資料源名稱,可自定,本例如LjDbfDatabase Type(資料庫類型)處選擇“Free Table directory”(自由表路徑),然後在下面的Path(路徑)處設置你要導入的DBF表所在的路徑,本列如
“D:” ->
點擊“OK”(確定)配製完成
->
關閉ODBC配製窗口


2
、通過SQL的導入導出資料(DTS)來把DBF表導成SQL表:

開始 ->
程式
->
Microsoft Sql Server
-導入導出數(DTS
->
下一步
->
此步為選擇資料源的視窗,資料源“Microsoft Visual FoxPro Driver”,同時在"用戶/系統DSN"處選擇你剛剛配製的資料源名(本例如LjDbf,當然上面配製資料源的過程也可以通過用戶/系統DSN”後面有一個新建按鈕來完成),然後點擊下一步
” ->
此步為選擇目的的視窗,目的"用於SQL ServerMicrosoft OLE DB提供程式"(此項一般為默認),同時選擇你要導成的SQL表的存放資料庫、伺服器及伺服器的驗證方式,然後點擊下一步
” ->
這時:

A
:如果要把DBF表全部欄位均導入,則選擇從源資料庫複製表和視圖,點擊下一步” ->
選擇要導入的DBF表,在目的處可修改生成SQL表的名稱,默認與DBF表名一樣,點擊下一步
” ->
再點擊下一步
” ->
最後點擊完成進行導入即可(導入成功與否DTS會有提示)。


B
:如果只導入DBF表中的幾個欄位或全部欄位(如果導入全部欄位,也可以用上面步驟A,結果是一樣的,只是方法不同),則選擇用一條查詢指定要輸出的資料,點擊下一步” ->
點擊查詢生成器,選擇要導入的DBF表(此時可選擇列),點擊下一步
” ->
指定排序順序,選一個或多個排序欄位,如果不用排序,此步可略,點擊下一步
” ->
此步可以指定查詢條件,如果沒有條件,此步可略,點擊下一步
” ->
出現了對應的SQL語句(也可以再修改生成的SQL語句,但不推薦),再點擊下一步
” ->
這時可修改要生成的SQL表名,默認為結果,再點擊下一步
” ->
再點擊下一步
” ->
最後點擊完成進行導入即可(導入成功與否DTS會有提示)。




工具導入2

先把DBF表轉成EXCELTXT,然後SQL SERVER的導入導出工具把EXCELTXT導入即可(此方法類似方法二,不再介紹)。

----------Sql Server
表 導出 Dbf----------

方法一:如果DBF表已經存在,在查詢分析器中執行以下語句(先選擇對應的資料庫
)


Insert Into openrowset('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:','select * from
B.DBF') Select * From
a

/*
說明
:
SourceDB=c: c:
dbf檔的存放目錄

B.Dbf  是已經存在dbf檔案名,資料導入此表
A.Dbf  是要導出的SQL表名
*/


方法二:如果DBF表不存在,直接導出時創建,通過SQL Server導入導出資料工具

1
、建立Visual FoxPro的資料源:

ODBC中建立一個Visual FoxPro的資料源(ODBC-Microsoft Visual FoxPro Driver)的步驟如下:
打開ODBC配製視窗 ->
選擇用戶DSN”頁面或系統DSN”頁面,建議用後者
->
點擊添加按鈕
->
選擇“Microsoft Visual FoxPro Driver”這個驅動
->
Data Source Name(數源源名稱)處輸入此資料源名稱,可自定,本例如LjDbfDatabase Type(資料庫類型)處選擇“Free Table directory”(自由表路徑),然後在下面的Path(路徑)處隨便設置一個路徑,本列如
“D:” ->
點擊“OK”(確定)配製完成
->
關閉ODBC配製窗口



2
、通過SQL的導入導出資料(DTS)來把SQL表導成DBF表:

開始 ->
程式
->
Microsoft Sql Server
-導入導出數(DTS
->
下一步
->
此步為選擇資料源的視窗,資料源"用於SQL ServerMicrosoft OLE DB提供程式"(此項一般為默認),同時選擇你要導出的SQL表所在資料庫、伺服器及伺服器的驗證方式,然後點擊下一步
” ->
此步為選擇目的的視窗,目的“Microsoft Visual FoxPro Driver”,同時在"用戶/系統DSN"處選擇你剛剛配製的資料源名(本例如LjDbf,當然上面配製資料源的過程也可以通過用戶/系統DSN”後面有一個新建按鈕來完成),然後點擊下一步
” ->
這時:

A
:如果要把被導出的SQL表的全部欄位均導出,則選擇從源資料庫複製表和視圖,點擊下一步” ->
選擇要導出的表或視圖,在目的處可修改生成的DBF表的名稱,默認與SQL表名一樣,點擊下一步
” ->
再點擊下一步
” ->
最後點擊完成進行導出即可(導出成功與否DTS會有提示),導出成功之後的DBF表的主檔案名與SQL的表名一樣。


B
:如果只導出SQL表中的幾個欄位或全部欄位(如果導出全部欄位,也可以用上面步驟A,結果是一樣的,只是方法不同),則選擇用一條查詢指定要輸出的資料,點擊下一步” ->
點擊查詢生成器,選擇要導出的SQL表(此時可選擇列),點擊下一步
” ->
指定排序順序,選一個或多個排序欄位,如果不用排序,此步可略,點擊下一步
” ->
此步可以指定查詢條件,如果沒有條件,此步可略,點擊下一步
” ->
出現了對應的SQL語句(也可以再修改生成的SQL語句,但不推薦),再點擊下一步
” ->
這時可修改要生成的DBF表名,默認為結果,再點擊下一步
” ->
再點擊下一步
” ->
最後點擊完成進行導出即可(導出成功與否DTS會有提示)。


注:

導出成功後,DBF檔一般存於 Microsoft Sql Server80ToolsBinn Program FilesCommon FilesODBCData Sources目錄下,並沒有存於上面所說的D:,這個我也不知為什麼,哪位如果知道,請告之。



*!* 以下轉自 wwwwb
*!* 以下是用VFP+ ADO +JET SQL實現在不同的資料庫系統之間自由轉換,生成的DBFVFP打開,
*!* 修改欄位長度即可。
*!* 注意:不同的資料庫系統有不同的欄位類型、長度等等,特殊欄位不能轉換,如
*!* IMAGETEXT等等,要手工轉換。


oConnection = Createobject("adodb.connection")
With oConnection
    .ConnectionString = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:;Extended Properties=dbase 5.0;Persist Security Info=False'
    .Open
Endwith
TEXT To lcStr Noshow
    Select * Into 要生成的DBF表名 From Sql表名 in [odbc] [ODBC;Driver=SQL Server;UID=sa;PWD=;Server=電腦名;DataBase=資料庫名]
Endtext
oConnection.EXECUTE(lcStr)
oConnection.Close

 

文章標籤
全站熱搜
創作者介紹
創作者 hsiung03 的頭像
hsiung03

hsiung.博格 ERP軟體

hsiung03 發表在 痞客邦 留言(0) 人氣(736)