Pat*_*ard 11 sql database oracle wolfram-mathematica connect
我正在尝试将Oracle数据库连接到Mathematica 8.另一个问题已经说明如何在MySQL数据库中完成它但它对我不起作用:
Needs["DatabaseLink"] AND conn = OpenSQLConnection[JDBC["MySQL(Connector/J)",
"yourserver/yourdatabase"], "Username" -> "yourusername", "Password" -> "yourpassword"]
Run Code Online (Sandbox Code Playgroud)
我桌面上可以找到以下信息:
filepath = "C:\oracle\ora92\network\ADMIN\tnsnames.ora"; HOST; PORT; username; password;
conn = OpenSQLConnection[JDBC["MySQL(Connector/J)", HOST], "Username" -> username, "Password" -> password]
Error message: JDBC::error:
Communications link failure The last packet sent successfully to the server was 0 milliseconds ago.
The driver has not received any packets from the server. >>
Run Code Online (Sandbox Code Playgroud)
有谁知道我如何连接或继续?
WRe*_*ach 12
Mathematica 8没有预先配备Oracle驱动程序,可以通过评估这些表达式来验证这一事实:
Needs["DatabaseLink`"]
JDBCDriverNames[]
(*
Out[2]= {Microsoft Access(ODBC),hsqldb,HSQL(Memory),HSQL(Server),
HSQL(Server+TLS),HSQL(Standalone),HSQL(Webserver),HSQL(Webserver+TLS),
jtds_sqlserver,jtds_sybase,mysql,MySQL(Connector/J),ODBC(DSN),odbc,
PostgreSQL,Microsoft SQL Server(jTDS),Sybase(jTDS),HSQL 2.0.1}
*)
Run Code Online (Sandbox Code Playgroud)
我们必须遵循Mathematica 文档中的说明,该文档描述了如何安装新的JDBC驱动程序.
首先,我们必须创建一个新的资源目录,在其中放置必要的JDBC驱动程序JAR文件:
$jarDirectory =
CreateDirectory @
FileNameJoin @
{$UserBaseDirectory, "Applications", "Oracle", "Java"}
Run Code Online (Sandbox Code Playgroud)
接下来,我们必须选择要使用的JDBC驱动程序.访问相关的Oracle页面,找到适合您数据库的JDBC驱动程序.
选择与Java 6兼容的驱动程序版本,即Mathematica 8内部使用的版本.对于此示例,我选择将Oracle 11.2.0.2.0驱动程序用于Java 6.下载该文件,然后将其移动到刚创建的资源目录中:
SystemOpen[$jarDirectory]
Run Code Online (Sandbox Code Playgroud)
接下来,我们将创建一个JDBC驱动程序配置文件,以便在Mathematica中注册新的驱动程序:
$configDirectory =
CreateDirectory @
FileNameJoin @
{$UserBaseDirectory, "Applications", "Oracle", "DatabaseResources"}
Export[
FileNameJoin @ {$configDirectory, "Oracle.m"}
, JDBCDriver[
"Name" -> "Oracle"
, "Driver" -> "oracle.jdbc.driver.OracleDriver"
, "Protocol" -> "jdbc:oracle:thin:@"
, "Version" -> 1
]
, "Text"
]
Run Code Online (Sandbox Code Playgroud)
现在安装了驱动程序:
JDBCDriverNames[]
(*
Out[9]= {Oracle,Microsoft Access(ODBC),hsqldb,HSQL(Memory),HSQL(Server),
HSQL(Server+TLS),HSQL(Standalone),HSQL(Webserver),HSQL(Webserver+TLS),
jtds_sqlserver,jtds_sybase,mysql,MySQL(Connector/J),ODBC(DSN),odbc,
PostgreSQL,Microsoft SQL Server(jTDS),Sybase(jTDS),HSQL 2.0.1}
*)
Run Code Online (Sandbox Code Playgroud)
如果命运微笑,我们现在可以建立连接并执行SQL查询:
$connection =
OpenSQLConnection[
JDBC["Oracle", "myserver:1521:mysid"]
, "Username" -> "scott"
, "Password" -> "tiger"
]
SQLExecute[$connection, "SELECT 'success!' FROM DUAL"]
Run Code Online (Sandbox Code Playgroud)
...其中myserver是数据库服务器名称,1521是侦听器端口号,mysid是Oracle系统ID(SID).
Oracle JDBC URL有多种形式.有关详细信息,请查看Oracle FAQ.
我怀疑您使用的是错误的JDBC驱动程序 - 您应该使用Oracle JDBC驱动程序而不是MySQL驱动程序.当我DatabaseLink用来连接Oracle数据库时,我使用了以下命令:
OpenSQLConnection[
JDBC[
"oracle.jdbc.driver.OracleDriver",
"jdbc:oracle:thin:@server:port:dbname"
],
"Name" -> "dbname",
"Username" -> "YourUserName",
"Password" -> "YourPassword"
]
Run Code Online (Sandbox Code Playgroud)
您应该确保将正确的Oracle JDBC驱动程序(对应于Oracle db版本)放到Mathematica可以找到它的位置.DatabaseLink 的文档部分介绍了此过程JDBC Connections.您可以通过执行来测试Mathematica可以看到哪些JDBC驱动程序JDBCDrivers[].确保您安装并使用与您的数据库版本对应的正确驱动程序,顺便说一句 - 错误的驱动程序版本可能会导致非常讨厌和非明显的错误(这与Mathematica无关).
我的猜测是,您不应该对 Oracle 使用 MySQL JBDC 连接。虽然它是针对 Mathematica 5.2 的,但您也许可以参考这篇文章。
我几乎没有使用过 Mathematica,当然也没有使用过数据库,但从该页面来看,您似乎可以这样做:
OpenSQLConnection[JDBC["oracle","server.business.com:1999"],
Username -> "you"]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2242 次 |
| 最近记录: |