VFPODBC.msi)。C:\Windows\SysWOW64\odbcad32.exe)。VFP_DBF_Source)。D:\Data\DBF_Files\。Dsn=VFP_DBF_Source;-- 檢查匯入資料筆數
SELECT COUNT(*) FROM dbo.ImportedTable;
-- 檢查欄位資料型別
EXEC sp_help 'ImportedTable';
-- 抽樣查看資料
SELECT TOP 10 * FROM dbo.ImportedTable;
| 問題 | 原因 | 解決方案 |
|---|---|---|
| 找不到 Visual FoxPro Driver | 未安裝或安裝 32/64 位元不匹配 | 安裝 VFPODBC.msi;64-bit SSMS 需 64-bit 驅動,或使用 32-bit ODBC 管理工具設定 DSN 供 32-bit 應用使用 |
| 中文欄位名/資料亂碼 | 編碼不匹配(DBF 多為 Big5/GB2312) | 在連線字串加入 CodePage=950 (Big5) 或 CodePage=936 (GB2312);或匯入後用 CAST/CONVERT 轉換 |
| Memo 欄位截斷/遺失 | DBF Memo 欄位對應到 varchar(max)/nvarchar(max) | 在「編輯對應關係」將目標欄位型別設為 nvarchar(max) 或 varbinary(max) |
| 數值欄位精度遺失 | DBF Numeric 欄位精度/小數位未正確對應 | 手動調整對應欄位的 Precision/Scale |
| 日期欄位轉換錯誤 | DBF Date 型別與 SQL Server datetime 格式差異 | 使用衍生欄位轉換:CONVERT(datetime, source_col, 111) 等 |
-- 需啟用 Ad Hoc Distributed Queries
EXEC sp_configure 'show advanced options', 1; RECONFIGURE;
EXEC sp_configure 'Ad Hoc Distributed Queries', 1; RECONFIGURE;
-- 直接查詢 DBF
SELECT *
FROM OPENROWSET(
'MSDASQL',
'Dsn=VFP_DBF_Source;',
'SELECT * FROM tablename'
);
.dtsx SSIS 套件,部署至 SQL Server Agent 排程執行。透過 ODBC 橋接 DBF 至 SQL Server,是舊系統資料遷移最標準、相容性最佳的路徑。