sourcecode

Oracle 데이터베이스를 Mathematica에 연결하는 방법은?

copyscript 2023. 11. 5. 14:55
반응형

Oracle 데이터베이스를 Mathematica에 연결하는 방법은?

오라클 데이터베이스를 Mathematica 8에 연결하려고 합니다.다른 질문은 이미 MySQL 데이터베이스에 대해 어떻게 처리할 수 있는지를 알려주었지만 저에게는 통하지 않았습니다.

Needs["DatabaseLink"] AND conn = OpenSQLConnection[JDBC["MySQL(Connector/J)", 
"yourserver/yourdatabase"], "Username" -> "yourusername", "Password" -> "yourpassword"]

데스크톱에서 사용할 수 있는 정보는 다음과 같습니다.

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. >>

어떻게 연결하거나 계속할 수 있는지 아는 사람?

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}
*)

새 JDBC 드라이버를 설치하는 방법을 설명하는 Mathematica 설명서의 지침을 따라야 합니다.

먼저 필요한 JDBC 드라이버 JAR 파일을 배치할 새 리소스 디렉토리를 생성해야 합니다.

$jarDirectory =
  CreateDirectory @
    FileNameJoin @
      {$UserBaseDirectory, "Applications", "Oracle", "Java"}

다음으로 사용할 JDBC 드라이버를 선택해야 합니다.관련 Oracle 페이지를 방문하여 데이터베이스에 맞는 올바른 JDBC 드라이버를 찾습니다.

Mathematica 8이 내부적으로 사용하는 버전인 Java 6와 호환되는 드라이버 버전을 선택했습니다.이 예에서는 Java 6용 Oracle 11.2.0.2.0 드라이버를 사용하기로 했습니다.파일을 다운로드한 다음 방금 만든 리소스 디렉토리로 이동합니다.

SystemOpen[$jarDirectory]

다음으로 새 드라이버가 Mathematica에 등록되도록 JDBC 드라이버 구성 파일을 만듭니다.

$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"
]

이제 드라이버가 설치됩니다.

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}
*)

운명이 웃고 있다면 이제 연결을 설정하고 SQL 쿼리를 실행할 수 있습니다.

$connection =
  OpenSQLConnection[
    JDBC["Oracle", "myserver:1521:mysid"]
  , "Username" -> "scott"
  , "Password" -> "tiger"
  ]

SQLExecute[$connection, "SELECT 'success!' FROM DUAL"]

... 여기서 myserver는 데이터베이스 서버 이름, 1521은 수신기 포트 번호, mysid는 Oracle System ID(SID)입니다.

Oracle JDBC URL은 다양한 형태로 제공됩니다.자세한 내용은 Oracle FAQ를 참조하십시오.

JDBC 드라이버를 잘못 사용하고 있는 것 같습니다. MySQL 드라이버가 아닌 Oracle JDBC 드라이버를 사용해야 합니다.사용할 때DatabaseLinkOracle 데이터베이스에 연결하기 위해 다음 명령을 사용했습니다.

OpenSQLConnection[
  JDBC[
   "oracle.jdbc.driver.OracleDriver", 
   "jdbc:oracle:thin:@server:port:dbname"
  ], 
  "Name" -> "dbname", 
  "Username" -> "YourUserName", 
  "Password" -> "YourPassword"
]

Mathematica가 찾을 수 있는 곳에 적절한 Oracle JDBC 드라이버(Oracle db 버전에 해당)를 넣어야 합니다.이 절차는 DatabaseLink, 섹션에 대한 설명서에 설명되어 있습니다.JDBC Connections. 를 실행하여 Mathematica에 어떤 JDBC 드라이버가 보이는지 테스트할 수 있습니다.JDBCDrivers[]. DB 버전인 b.t.w.에 해당하는 올바른 드라이버를 설치하고 사용하는지 확인하십시오. 드라이버 버전을 잘못 사용하면 매우 고약하고 명확하지 않은 버그가 발생할 수 있습니다(이는 Mathematica와 무관함).

Oracle의 경우 MySQL JBDC 연결을 사용하지 않는 것이 좋을 것 같습니다.Mathematica 5.2를 위한 것이기는 하지만, 여기 당신이 무언가로 사용할 수 있는 기사가 있습니다.

저는 Mathematica를 거의 사용하지 않았습니다. 그리고 확실히 데이터베이스를 사용하지는 않았지만, 그 페이지를 보면 다음을 수행할 수 있을 것 같습니다.

OpenSQLConnection[JDBC["oracle","server.business.com:1999"],
    Username -> "you"]

위의 WRach의 답변은 맞지만, Jlink가 로드되고 Java ClassPath가 올바른지 확인하고 오라클 jdbc6.jar 파일을 가리키는 2개의 추가 라인이 있다는 것을 아는 것도 도움이 될 수 있습니다.

Needs["JLink`"]
AddToClassPath[
FileNameJoin[{$UserBaseDirectory, "Applications", "Oracle", 
"Java"}]];

아니면 그냥 말 그대로 답을 사용한다면.

Needs["JLink`"]
AddToClassPath[$jarDirectory];

언급URL : https://stackoverflow.com/questions/7178647/how-to-connect-an-oracle-database-to-mathematica

반응형