如何使用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。
此致
答案 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”>目录>默认>表> 文件名。链接服务器的属性说明如下:
从“属性”窗口的“常规”选项卡
从“属性”窗口的“安全”选项卡
从“属性”窗口的“服务器选项”选项卡
请注意,这可能是也可能不是所有数据库服务器环境的安全配置,但这是在我们内部网络上的SQL Server上,只能在我们的办公室内访问,在LAN外没有端点或访问权限(它是不用作网络或其他互联网服务的服务器。)
答案 3 :(得分:0)
我遇到过类似的问题,其中的东西并没有尝试将旧表从VFP迁移到SQL 2008R2并使用以下过程:
这可以解释为什么您需要32位导入:https://msdn.microsoft.com/en-us/library/ms141209.aspx