通过Excel连接到Oracle数据库

时间:2018-01-10 21:58:07

标签: database excel oracle oracle12c excel-2016

我试图从Excel工作表连接到我们服务器上的Oracle数据库,但我无法理解原因。

我目前在不同的ORACLE_HOME中安装了 32位和64位Oracle 12c,并在我的64位计算机上安装了32位Excel。

我尝试使用新查询向导尝试连接到Excel中的Oracle数据库。

New Query Wizard

当我点击从Oracle数据库时,我收到以下错误/消息。

Error

我可以继续使用当前的提供程序,但是当我真正尝试连接到数据库时,我得到了这个:

Error

我不明白为什么当我的计算机上安装了32位和64位版本的Oracle 12c时,我会收到此错误。两者都包含在我的PATH变量(32位优先)中,我还包含一个特定的ORACLE_HOMETNS_ADMIN来指向我的32位安装,因为我的excel是32位

我真的希望能够通过Excel从数据库进行查询,但这个问题让我感到困惑。

修改

我刚刚将我的Oracle主页中的ODBC驱动程序添加到ODBC数据源管理员工具中。

enter image description here

目前它可以通过此工具进行连接。

enter image description here

但是当我尝试连接到 ODBC Connection 向导时,我知道得到这个: enter image description here

任何想法?

1 个答案:

答案 0 :(得分:1)

您是如何安装32位和64位Oracle客户端的?

请查看此说明:BadImageFormatException. This will occur when running in 64 bit mode with the 32 bit Oracle client components installed

短版:

您的Excel是32位,您尝试使用32位Oracle。我假设您启动了64位版本的" ODBC管理员" - 可能存在不匹配。或者您PATH关于%ORACLE_HOME%和/或%ORACLE_HOME%\bin文件夹的问题

长版:

您的Excel是32位,所以一般来说,通过将32位客户端放入PATHORACLE_HOME来实现正确的方法,您不能在一个进程中混合使用32位和64位程序集。顺便说一句,当您按照上面的说明操作时,Windows会自动管理它。

我假设你安装了Oracle Instant Client。默认的Instant Client既不包含任何ODBC驱动程序也不包含Oracle数据提供程序(ODP.NET,Oracle.DataAccess.Client

ODBC

您可能有2个ODBC驱动程序,一个来自Oracle,通常称为 Oracle in OraClient12_home1 ,另一个来自Microsoft,名为 Microsoft ODBC for Oracle (默认情况下应安装Windows)安装,但它也需要Oracle客户端。

Oracle的ODBC驱动程序可用于32位和64位,Microsoft驱动程序仅适用于32位。您有2个ODBC管理员,32位(运行c:\Windows\SysWOW64\odbcad32.exe)和64位(运行c:\Windows\System32\odbcad32.exe)。你应该看到安装的驱动程序32 resp。 64位。

Oracle数据提供商

对于数据提供者,您有类似的情况。您有一个来自Microsoft( Microsoft .NET Framework数据提供程序for Oracle System.Data.OracleClient)和Oracle( Oracle Data Provider for .NET ,{{1} ,几个版本)。两者都可用于32位和64位。

原则上,使用哪个驱动程序/提供程序连接到Oracle并不重要 - 只需要架构(即32位与64位)匹配。每个驱动程序/提供程序都需要安装Oracle客户端Microsoft的所有驱动程序/提供程序都已弃用,您应该更喜欢Oracle(如警告消息中所述)

其他

Oracle还提供 ODP.NET,托管驱动程序,它不需要任何进一步的Oracle客户端安装,并且可以在32位和64位上运行。但是,我不知道您是否可以在Excel中使用它。

最后但同样重要的是,您还拥有OLE DB提供程序。另一个来自Microsoft( Microsoft OLE DB Provider for Oracle )和一个来自Oracle( Oracle Provider for OLE DB )。 Microsoft提供程序仅适用于32位,已被弃用。