我正在尝试使用以下命令将数据从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文件夹。它仍显示两个错误。
答案 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。