2

我正在尝试使用以下命令将数据从 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)".

任何线索为什么它会出错?对于第二个错误,我已按照某些博客的建议完全访问临时文件夹。它仍然显示两个错误。

4

4 回答 4

3

如果文件名是一个.dbf 试试这个:

select * from
openrowset('MSDASQL',
'Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=E:\Data;',
'SELECT * FROM a')
于 2012-10-15T11:41:42.717 回答
1

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

于 2010-02-16T15:17:02.657 回答
1

您正在使用 64 位 SQL Server,当驱动程序是 32 位时,它正在寻找 64 位 ODBC 源。FoxPro(也是 DBF)有一个解决方法,它也适用于 dBASE:

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

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

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

于 2013-02-18T12:42:55.977 回答
1

您的 SELECT 正在指定文件的路径 - 您应该指定表名,大概是“a”。

于 2010-02-16T10:45:14.547 回答