티스토리 뷰
앞서 docker 로 오라클 db 를 구축해놨는데, R 프로그램으로 오라클에 접속해본다. 여러가지 방법이 있긴한데.. jdbc driver 를 사용하는게 그나마 간단하게 접속할 수 있었다. 여러가지 방법이 있긴하다. 성능까지 비교한 글이 있어 참고하면 좋을 듯 하다.
R to Oracle Database Connectivity: Use ROracle for both Performance and Scalability (2018)
R users have a few choices of how to connect to Oracle Database. The most commonly seen include: RODBC, RJDBC, and ROracle. However, these three packages have significantly different performance and scalability characteristics, which can greatly impact you
blogs.oracle.com
우선 RJDBC 라이브러리를 활용하기로 했으니, jdbc 다운로드 하러 오라클 웹페이지를 가자.
https://www.oracle.com/database/technologies/appdev/jdbc-downloads.html
JDBC and UCP Downloads page
No results found Your search did not match any results. We suggest you try the following to help find what you're looking for: Check the spelling of your keyword search. Use synonyms for the keyword you typed, for example, try “application” instead of “sof
www.oracle.com
ojdbc8.jar 파일을 받는다. 나중에 R 프로그램에서 읽을 수 있도록 경로만 대략 기억하고,
마지막으로, java jdk 가 필요한데, 난 아래 링크에서 java jdk 13 맥용으로 다운받았다.
JDK 13.0.2 GA Release
JDK 13.0.2 General-Availability Release Documentation Build 8 (2019/12/11): General Availability These open-source builds are provided under the GNU General Public License, version 2, with the Classpath Exception. Commercial builds of JDK 13.0.2 from Oracl
jdk.java.net
다운받아서 압축을 풀고, /Library/Java/JavaVirtualMachines/ 경로에 붙여 넣는다.
R studio 를 열고, RJDBC 를 로드하려 하는데, 오류가 발생한다.
> library(RJDBC)
Loading required package: DBI
Loading required package: rJava
Error: package or namespace load failed for ‘rJava’:
.onLoad failed in loadNamespace() for 'rJava', details:
call: dyn.load(file, DLLpath = DLLpath, ...)
error: unable to load shared object '/Library/Frameworks/R.framework/Versions/3.6/Resources/library/rJava/libs/rJava.so':
dlopen(/Library/Frameworks/R.framework/Versions/3.6/Resources/library/rJava/libs/rJava.so, 6): Library not loaded: /Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home/lib/server/libjvm.dylib
Referenced from: /Library/Frameworks/R.framework/Versions/3.6/Resources/library/rJava/libs/rJava.so
Reason: image not found
Error: package ‘rJava’ could not be loaded
rJava 에서 찾는 jdk 경로가 이상하다. 11버전이 있지도 않은데, 왜 저런 경로를 찾아서 library가 로드도 못하는지.. 열심히 구글링 해서 아래 2개 링크를 찾았다. 맥에서 주로 발생하는 문제같은데, 아래 명령어로 수정이 되었다.
(참고) https://github.com/s-u/rJava/issues/151#issuecomment-395070694
(참고) https://yunhwankim2.github.io/2019/09/25/rstudio-rjava/
install_name_tool -change \
/Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home/lib/server/libjvm.dylib \
/Library/Java/JavaVirtualMachines/jdk-13.0.2.jdk/Contents/Home/lib/server/libjvm.dylib \
/Library/Frameworks/R.framework/Versions/3.6/Resources/library/rJava/libs/rJava.so
docker 로 oracle db 를 run 한다. 이전글을 참고한다.
이제 R 프로그램으로 오라클db 와 연결한다.
library(RJDBC)
jdbc_driver = JDBC("oracle.jdbc.OracleDriver", classPath = "../docker/oracle/18.4.0/r/ojdbc8.jar")
con = dbConnect(jdbc_driver, "jdbc:oracle:thin:@//localhost:1521/xepdb1", "sys as sysdba", "1")
아래 쿼리의 결과가 R studio 에 표시된다.
> dbGetQuery(con, 'select * from hr.jobs')
JOB_ID JOB_TITLE MIN_SALARY MAX_SALARY
1 AD_PRES President 20080 40000
2 AD_VP Administration Vice President 15000 30000
3 AD_ASST Administration Assistant 3000 6000
4 FI_MGR Finance Manager 8200 16000
5 FI_ACCOUNT Accountant 4200 9000
6 AC_MGR Accounting Manager 8200 16000
7 AC_ACCOUNT Public Accountant 4200 9000
8 SA_MAN Sales Manager 10000 20080
9 SA_REP Sales Representative 6000 12008
10 PU_MAN Purchasing Manager 8000 15000
11 PU_CLERK Purchasing Clerk 2500 5500
12 ST_MAN Stock Manager 5500 8500
13 ST_CLERK Stock Clerk 2008 5000
14 SH_CLERK Shipping Clerk 2500 5500
15 IT_PROG Programmer 4000 10000
16 MK_MAN Marketing Manager 9000 15000
17 MK_REP Marketing Representative 4000 9000
18 HR_REP Human Resources Representative 4000 9000
19 PR_REP Public Relations Representative 4500 10500
다 사용했다면, 커넥션을 끊는다.
> dbDisconnect(con)
[1] TRUE
- Total
- Today
- Yesterday
- ipTIME
- 자급제폰
- 막대그래프
- 이클립스
- python
- ktm모바일
- 셀프개통
- MySQL
- Spring
- vagrant
- 알뜰요금제
- heroku
- ubuntu
- javascript
- docker
- R
- ggplot
- Google Chart Tools
- 마인크래프트
- MongoDB
- ggplot2
- java
- 아이맥
- 도넛차트
- Oracle
- github
- MyBatis
- SVN
- 맥북
- eclipse
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |