使用SQL脚本在SQL Server中导入DBF文件

时间:2013-12-05 04:09:54

标签: sql .net sql-server foxpro dbf

如何使用SQL脚本将.dbf文件导入SQL Server?

从这篇文章中找到答案,但不幸的是,它们都没有对我有用:(:

当我尝试这段代码时:

SELECT * 
INTO [APP_DB]..[BILLHEAD] 
FROM OPENROWSET('MSDASQL', 'Driver=Microsoft Visual FoxPro Driver; SourceDB=D:\DBF; SourceType=DBF', 'SELECT * FROM BILLHEAD')

我收到此错误:

  

OLE DB提供程序“MSDASQL”用于链接服务器“(null)”返回消息“[Microsoft] [ODBC驱动程序管理器]未找到数据源名称且未指定默认驱动程序”。消息7303,级别16,状态1,行1无法为链接服务器“(null)”初始化OLE DB提供程序“MSDASQL”的数据源对象。

而且,在尝试这个时:

SELECT * 
FROM openrowset('VFPOLEDB','D:\DBF\BILLHEAD.dbf';'';
                '','SELECT * FROM BILLHEAD')

我收到此错误:

  

Msg 7438,Level 16,State 1,Line 1
  无法在64位SQL Server上加载32位OLE DB提供程序“VFPOLEDB”。

我不想下载任何第三方应用程序。这就是为什么我正在尝试所有可能的解决方案,现在我需要你的帮助。我正在创建一个小应用程序来将.DBF文件导入SQL Server。

此致

4 个答案:

答案 0 :(得分:2)

您正在使用64位SQL服务器,但FoxPro OLE DB驱动程序是32位。您需要参考this article,其中讨论了如何将32位OLE DB驱动程序与64位SQL Server一起使用。

答案 1 :(得分:0)

Gimo,我不确定这是否有效,而且我不是MS SQL Server专家,但我最近一直在努力解决类似的问题而且我有一个想法。如果您先执行以下语句,我认为您可以从您的问题中获得第一个代码块:

EXEC sp_configure 'show advanced options', 1 RECONFIGURE; GO
EXEC sp_configure 'Ad Hoc Distributed Queries', 1 RECONFIGURE; GO

如果您没有足够的权限(在我的情况下发生),这可能无效,但可能值得一试。

答案 2 :(得分:0)

我们的办公室SQL / GIS大师Burce解决了我遇到的类似问题。我不确定他是如何做到这一切的所有细节,所以虽然我不愿意将其作为“答案”输入(作为评论输入的字符太多)我将描述我能做什么以防万一对任何人都有帮助。首先要知道他对SQL Server拥有完全权限,因此这个解决方案可能不适合所有数据库用户实现。 Bruce设置了一个链接服务器,它连接到我们的LAN文件服务器上的目录“... / DBF /”。他还建立了一个类似的Linked Server& CSV文件的目录。我们办公室的任何人都可以简单地将DBF文件复制到此目录,然后在SQL Server中访问它,就好像它是SQL Server数据库中的常规表一样。我通过连接到数据库引擎然后转到服务器对象>来在SSMS中访问它。链接服务器> “DBF”>目录>默认>表> 文件名。链接服务器的属性说明如下:

从“属性”窗口的“常规”选项卡 enter image description here

从“属性”窗口的“安全”选项卡 enter image description here

从“属性”窗口的“服务器选项”选项卡 enter image description here

请注意,这可能是也可能不是所有数据库服务器环境的安全配置,但这是在我们内部网络上的SQL Server上,只能在我们的办公室内访问,在LAN外没有端点或访问权限(它是不用作网络或其他互联网服务的服务器。)

答案 3 :(得分:0)

我遇到过类似的问题,其中的东西并没有尝试将旧表从VFP迁移到SQL 2008R2并使用以下过程:

  1. 在VFP中选择表格
  2. 复制到blahblah xl5
  3. 第2步产生excel文件
  4. 使用SQL 2008 R2或更高版本"导入和导出数据(32位)"导入excel文件。
  5. 我运行Windows 7 64位,仍然必须使用32位导入才能使其顺利运行。
  6. 这可以解释为什么您需要32位导入:https://msdn.microsoft.com/en-us/library/ms141209.aspx