----------DBF 匯入 SQL Server表----------
以下均以SQL2000、VFP6及以上的表為例
方法一:查詢分析器中執行如下語句(先選擇對應的資料庫)
--如果接受匯入資料的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表不存在,匯入時建立
--方法一:
select * into 要產生的SQL表名 from OPENROWSET( 'MICROSOFT.JET.OLEDB.4.0 ', 'dBase IV;HDR=NO;IMEX=2;DATABASE=c:\ ', 'select * from dbf表名.dbf ')
--方法二:
select * into 要產生的SQL表名 from OPENROWSET( 'MICROSOFT.JET.OLEDB.4.0 ', 'dBase III;HDR=NO;IMEX=2;DATABASE=c:\ ', 'select * from dbf表名.dbf ')
--方法三:
select * into 要產生的SQL表名 from openrowset( 'MSDASQL ', 'Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:\ ', 'select * from dbf表名.DBF ')
--用前兩種方法匯入SQL SERVER後,源表再用VFP開啟就不提示“不能存取檔案”,說明語句執行後就把源表關閉了。不過也有不盡人意的地方,就是用前兩種方法匯入後,源表中的字元型欄位匯入後SQL表欄位對應變成NVARCHAR了。
--第三種方法有一個缺點:把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 欄位1,欄位2 from aa.DBF ')
/*--說明:
SourceDB=c:\ c:\是dbf檔案的存放目錄
aa.DBF 是dbf檔案名稱