將DBF檔案匯入Sqlserver資料庫

2022-01-23 11:58:16 字數 1573 閱讀 8168

解決方法(摘抄自網路):     

--方法一:

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表就可以了,說明經過一段時間後查詢分析器才把這個表關閉。

可以直接將dbf檔案匯入sqlserver資料庫,也可以先將dbf檔案匯入dataset,再將dataset的資料匯入資料庫。dbf檔案匯入dataset的具體實現方法如下:

需要引入system.data.odbc包

public dataset importdbftodataset(string filepath, string

tabname)

catch

(exception e)

finally

return

thisdataset;

}

view code

下面的程式通過timer定時器,設定定時將本地dbf檔案直接存入資料庫表,該dbf檔案會定時被覆蓋掉。

class

connect

public

void

createtimer()

void timer_elapsed(object

sender, elapsedeventargs e)

private

void

insert()

}

1.無法初始化鏈結伺服器 "(null)" 的 ole db 訪問介面 "msdasql" 的資料來源物件」;

2.sql server 阻止了對元件 'ad hoc distributed queries' 的 statement'openrowset/opendatasource' 的訪問;

原因是因為「功能的外圍應用配置器」中沒有「啟用openrowset和opendatasource支援」,只需要開啟「功能的外圍應用配置器」設定一下就可以。

將ACCESS資料批量匯入SQL SERVER

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 if object id sp inputaccesstosql isnotnull dropproc sp...

將Excel檔案資料庫匯入SQL Server

將excel檔案資料庫匯入sql server的三種方案 方案一 通過oledb方式獲取excel檔案的資料,然後通過dataset中轉到sql server openfiledialog new openfiledialog openfiledialog.filter excel files xl...

如何高效的將excel匯入sqlserver?

大部分人都知道用oledb來讀取資料到dataset,但是讀取之後怎麼處理dataset就千奇百怪了。很多人通過迴圈來拼接sql,這樣做不但容易出錯而且效率低下,system.data.sqlclient.sqlbulkcopy 對於新手來說還是比較陌生的,這個就是傳說中效率極高的bcp,6萬多資料...