步骤一.将dbf文件放在任意系统目录下,我放在d:\db目录下
步骤二.需安装 AccessDatabaseEngine.exe (ACE)
官网下载地址:
https://www.microsoft.com/en-us/download/details.aspx?id=13255
安装之后在 sqlserver 实例下 ->“链接服务器”-> “访问接口”中会看到以下接口。
步骤三.在ssms中执行sql查询语句
select*from OPENROWSET(‘Microsoft.ACE.OLEDB.12.0‘,‘dBase IV;HDR=NO;IMEX=2;DATABASE=d:/db‘,‘select * from [2015.DBF]‘)
这里会报错,类似
许执行以下语句:
exec sp_configure ‘show advanced options‘,1
reconfigure
exec sp_configure ‘Ad Hoc Distributed Queries‘,1
reconfigure
EXEC master.dbo.sp_MSset_oledb_prop N‘Microsoft.ACE.OLEDB.12.0‘, N‘AllowInProcess‘, 1
EXEC master.dbo.sp_MSset_oledb_prop N‘Microsoft.ACE.OLEDB.12.0‘, N‘DynamicParameters‘, 1
步骤四.再次执行sql 查询命令
select*from OPENROWSET(‘Microsoft.ACE.OLEDB.12.0‘,‘dBase IV;HDR=NO;IMEX=2;DATABASE=d:/db‘,‘select * from [2015.DBF]‘)
提示如下
需安装Foxpro,并在Foxpro命令框输入以下命令 回车
USE ‘d:\db\2015.dbf‘ EXCLUSIVE;
COPY TO ‘d:\db\2015new.dbf‘ TYPE FOX2X;
再次执行,这里应该选择新的dbf文件2015new.dbf,最终成功读取了dbf文件内容。速递还是比较快的,100多万的数据全表查询用了1分钟左右。
select*from OPENROWSET(‘Microsoft.ACE.OLEDB.12.0‘,‘dBase IV;HDR=NO;IMEX=2;DATABASE=d:/db‘,‘select * from [2015new.DBF]‘)
知识点总结:
1.以下命令作用
exec sp_configure ‘show advanced options‘,1
reconfigure
exec sp_configure ‘Ad Hoc Distributed Queries‘,1
reconfigure
EXEC master.dbo.sp_MSset_oledb_prop N‘Microsoft.ACE.OLEDB.12.0‘, N‘AllowInProcess‘, 1
EXEC master.dbo.sp_MSset_oledb_prop N‘Microsoft.ACE.OLEDB.12.0‘, N‘DynamicParameters‘, 1
2.为什么要复制一份
USE ‘d:\db\2015.dbf‘ EXCLUSIVE;
COPY TO ‘d:\db\2015new.dbf‘ TYPE FOX2X;