如何使用SQL脚本将数据从DBF导入SQL?

时间:2010-02-16 10:13:01

标签: sql odbc oledb dbf dbase

我正在尝试使用以下命令将数据从DBF文件导入到SQL表中 -

select *
from openrowset('MSDASQL', 
'Driver={Microsoft dBase Driver (*.dbf)};DBQ=E:\data\;',
'select * from E:\data\a.dbf')

但它没有说法

    OLE DB provider "MSDASQL" for linked server "(null)" returned message "[Microsoft][ODBC dBase Driver]General Warning Unable to open registry key 'Temporary (volatile) Jet DSN for process 0x120 Thread 0x3084 DBC 0x303dfbc Xbase'.".    
OLE DB provider "MSDASQL" for linked server "(null)" returned message "[Microsoft][ODBC dBase Driver] Disk or network error.".    
Msg 7303, Level 16, State 1, Line 1    
Cannot initialize the data source object of OLE DB provider "MSDASQL" for linked server "(null)".

有什么线索给出错误?对于第二个错误,我已经根据某些博客的建议完全访问了temp文件夹。它仍显示两个错误。

4 个答案:

答案 0 :(得分:3)

如果filename是.dbf 试试这个:

select * from
openrowset('MSDASQL',
'Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=E:\Data;',
'SELECT * FROM a')

答案 1 :(得分:1)

您的SELECT指定了文件的路径 - 您应该指定表名,这可能是“a”。

答案 2 :(得分:1)

为了补充CodeByMoonlight,驱动程序信息指向找到数据文件的路径,因此您的后续查询应该只是“Select * should from a”,因为路径和.dbf扩展名都应隐含

答案 3 :(得分:1)

您使用的是64位SQL Server,当驱动程序为32位时,它会查找64位ODBC源。 FoxPro(也是DBF)的解决方法也适用于dBASE:

使用.NET Framework Provider for OLE DB,然后使用MS OLE DB Provider for VFP,在Visual Studio中打开一个新的SqlDataSource。连接字符串应如下所示(或使用UNC)

Provider=VFPOLEDB.1;Data Source=h:\Programs\Data;Persist Security Info=True;User    ID=Your_user;Password=your_password 

配置向导包含一个测试SQL的部分。您可以使用此运行ad hoc SQL。