星期三, 3月 02, 2016

[SQL] Linked Server 讀取 VFP 檔案

看見這篇 論壇討論,想說來試看看,畢竟 VFP 現在還是公司主力,雖然已經從純 VFP 改為 VFP + SQL Server,實務上也不會有這樣的需求和應用,加減學吧

測試環境:
  • Win10 64bit
  • SQL Server 2005 Express 32bit
  • VFP 9.0

安裝 VFPOLEDB Driver

VFPOLEDB Driver 可以從 MS 官方網站下載,但該 Driver 是 32bit 的喔,載點:Microsoft OLE DB Provider for Visual FoxPro 9.0

[SQL] Linked Server 讀取 VFP 檔案-1

利用 sp_addlinkedserver 建立 VFP Linked Server
-- 建立 DBF Linbked Server
EXEC Master.dbo.sp_addlinkedserver 
    @server = 'VFPOleDB-DBF',
    @srvproduct = 'VFP',
    @provider = 'VFPOLEDB',
    -- 指定 DBF 所在資料夾,該路徑為 VFP Sample Data 資料夾所在
    @datasrc = 'C:\PROGRAM FILES (X86)\MICROSOFT VISUAL FOXPRO 9\SAMPLES\DATA'
GO

-- 建立 DBC Linbked Server
EXEC Master.dbo.sp_addlinkedserver 
    @server = 'VFPOleDB-DBC',
    @srvproduct = 'VFP',
    @provider = 'VFPOLEDB',
    -- 指定 DBC 所在位置,testdata.dbc 為 VFP Sample Data
    @datasrc = 'C:\PROGRAM FILES (X86)\MICROSOFT VISUAL FOXPRO 9\SAMPLES\DATA\testdata.dbc'
GO
透過已建立的 Linked Server 讀取 VFP 檔案
-- 讀取 DBF 檔案
SELECT * FROM [VFPOleDB-DBF]...Products
SELECT * FROM OPENQUERY ([VFPOleDB-DBF], 'SELECT * FROM Products')
-- 讀取 DBC 檔案
SELECT * FROM [VFPOleDB-DBC]...Products
SELECT * FROM OPENQUERY ([VFPOleDB-DBC], 'SELECT * FROM Products')
利用 OPENROWSET() 直接透過 VFPOLEDB 存取 VFP 檔案
-- 讀取 DBF 檔案
SELECT * FROM OPENROWSET ('VFPOLEDB' , 'C:\PROGRAM FILES (X86)\MICROSOFT VISUAL FOXPRO 9\SAMPLES\DATA' ; ' ' ; ' ' , 'SELECT * FROM Products')
-- 讀取 DBC 檔案
SELECT * FROM OPENROWSET ('VFPOLEDB' , 'C:\PROGRAM FILES (X86)\MICROSOFT VISUAL FOXPRO 9\SAMPLES\DATA\testdata.dbc' ; ' ' ; ' ' , 'SELECT * FROM Products')
上述三種查詢方式都可以得到下圖結果

[SQL] Linked Server 讀取 VFP 檔案-2

沒有留言:

張貼留言