一、怎么向VFP數據表中一次加入多條記錄
以下均以SQL2000、VFP6及以上的表為例
代碼導入:查詢分析器中執行如下語句(先選擇對應的數據庫)
————-如果接受導入數據的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’)
–需要安裝Visual FoxPro ODBC Driver(驅動下載:http://msdn2.microsoft.com/zh-cn/vfoxpro/Bb190233.aspx)
–方法二:有一個缺點:把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文件名
*/
延伸閱讀:
二、行式數據庫與列式數據庫應用場景
行式更適合OLTP,比如傳統的基于增刪改查操作的應用。列式更適合OLAP,非常適合于在數據倉庫領域發揮作用,比如數據分析、海量存儲和商業智能;涉及不經常更新的數據。
由于設計上的不同,列式數據庫在并行查詢處理和壓縮上更有優勢。而且數據是以列為單元存儲,完全不用考慮數據建模或者說建模更簡單了。要查詢計算哪些列上的數據,直接讀取列就行。
最后我們需要務實的指出,沒有使用廣泛的數據庫,列式數據庫也并非使用廣泛,只不過給DBA提供了更多的選擇,DBA需根據自己的應用場景自行選擇。