Connecting R to an Oracle database with RJDBC
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
In many circumstances, you might want to connect R directly to a database to store and retrieve data. If the source database is an Oracle database, you have a number of options:
Using ROracle should theoretically provide you with the best performing client, as this library is a wrapper around the Oracle OCI driver. The OCI driver, however, is platform-specific and requires you to install Oracle database client software.
What if you don’t want to write code that is either platform-specific or requires relatively complex, platform-specific installation steps? In this case, you should consider using RJDBC.
I’ll assume that you have a JRE/JDK installed and know the path to your JAVA_HOME.
- Hostname or IP, e.g., database.company.com
- Port, e.g., 1521
- Service name or SID, e.g., ORCL
- Username
- Password
This information will allow us to construct the DSN, which will look something like this: jdbc:oracle:thin:@//hostname:port/service_name_or_sid
Armed with this DSN and your Java home, you should now be able to modify and execute the example below.
# Set JAVA_HOME, set max. memory, and load rJava library | |
Sys.setenv(JAVA_HOME='/path/to/java_home') | |
options(java.parameters="-Xmx2g") | |
library(rJava) | |
# Output Java version | |
.jinit() | |
print(.jcall("java/lang/System", "S", "getProperty", "java.version")) | |
# Load RJDBC library | |
library(RJDBC) | |
# Create connection driver and open connection | |
jdbcDriver <- JDBC(driverClass="oracle.jdbc.OracleDriver", classPath="lib/ojdbc6.jar") | |
jdbcConnection <- dbConnect(jdbcDriver, "jdbc:oracle:thin:@//database.hostname.com:port/service_name_or_sid", "username", "password") | |
# Query on the Oracle instance name. | |
instanceName <- dbGetQuery(jdbcConnection, "SELECT instance_name FROM v$instance") | |
print(instanceName) | |
# Close connection | |
dbDisconnect(jdbcConnection) |
R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.