Your SlideShare is downloading. ×
Los Angeles R users group - Dec 14 2010 - Part 2
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Los Angeles R users group - Dec 14 2010 - Part 2

2,556

Published on

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,556
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
33
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Database Access through R Krishna Bhogaonker December 14, 2010
  • 2. Where is this Going? ● Introduction to database connection methods ● Examples from some common R packages (cheat sheets a.k.a. eye charts) ● Introduction to the sqldf package14/12/10 Database Access Through R 2
  • 3. Database access is about fitting round pegs intosquare holes.14/12/10 Database Access Through R 3
  • 4. Issues to Consider when Choosing a DataAccess Method for Basic Analysis● How much work does it take to set up? ● Lazy ways – GUIs like RCommander, Deducer, JGR, Revolutions, RedR . . . . ● Diligent ways – Database or Protocol Specific R Packages.● Speed● Stability● Platform14/12/10 Database Access Through R 4
  • 5. High-Level Database Connection Procedure ● Open a database connection object using the appropriate driver (ODBC, JDBC, etc.) ● Authenicate user and confirm connection ● Execute database tasks by referencing the appropriate methods on the database object14/12/10 Database Access Through R 5
  • 6. DBI Package ● Big package with connections to various database protocols including Oracle, PostgreSQL, ODBC, SQLite, MySQL ## choose the proper DBMS driver and connect to the server drv <- dbDriver("ODBC") con <- dbConnect(drv, "dsn", "usr", "pwd") ## the interface can work at a higher level importing tables as data.frames and exporting data.frames as DBMS tables. dbListTables(con) dbListFields(con, "quakes") if(dbExistsTable(con, "new_results")) dbRemoveTable(con, "new_results") dbWriteTable(con, "new_results", new.output)14/12/10 Database Access Through R 6
  • 7. RODBC ● Provides access to ODBC compliant databases, including MSSQL, MS Access, and others # connect to database library(RODBC) myconn <-odbcConnect("mydsn", uid="Rob", pwd="aardvark") # query data from the database crimedat <- sqlFetch(myconn, Crime) pundat <- sqlQuery(myconn, "select * from Punishment") # close database connection close(myconn)14/12/10 Database Access Through R 7
  • 8. RJDBC ● Uses the DBI interface for the front-end and JDBC driver on the back-end # connect to the database drv <- JDBC("com.mysql.jdbc.Driver", "/etc/jdbc/mysql-connector-java-3.1.14-bin.jar", "`") conn <- dbConnect(drv, "jdbc:mysql://localhost/test") # access database tables dbListTables(conn) data(iris) # write to and query tables dbWriteTable(conn, "iris", iris) dbGetQuery(conn, "select count(*) from iris") d <- dbReadTable(conn, "iris")14/12/10 Database Access Through R 8
  • 9. RMySQL ● Database interface for MySQL driver using the DBI standard. ## connect and authenticate to a MySQL Db con <- dbConnect(MySQL(), group = "lasers") con2 <- dbConnect(MySQL(), user="opto", password="pure-light", dbname="lasers", host="merced" ## list tables ad fields in a table dbListTables(con) dbListFields(con, "table_name") ## import and export data frames d <- dbReadTable(con, "WL") dbWriteTable(con, "WL2", a.data.frame) ## table from a data.frame dbWriteTable(con, "test2", "~/data/test2.csv") ## table from file14/12/10 Database Access Through R 9
  • 10. RpgSQL ● PostgreSQL interface to R via RJDBC # the user/password/dbname used here are actually the defaults con <- dbConnect(pgSQL(), user = "postgres", password = "", dbname = "test") # create table, populate it and display it s <- create table tt("id" int primary key, "name" varchar(255)) dbSendUpdate(con, s) dbSendUpdate(con, "insert into tt values(1, Hello)") dbSendUpdate(con, "insert into tt values(2, World)") dbGetQuery(con, "select * from tt") # transfer a data frame to pgSQL and then display it from the database # dbWriteTable is case sensitive dbWriteTable(con, "BOD", BOD) # table names are lower cased unless double quoted dbGetQuery(con, select * from "BOD")14/12/10 Database Access Through R 10
  • 11. RMongo ● Access to Mongodb through R. Modeled on RMySQL. Still in alpha as of Nov 3, 2010. # connect to a database mongo <- mongoDbConnect("eat2treat_development") # show the collections dbShowCollections(mongo) # perform an all query with a document limit of 2 and offset of 0. # the results is a data.frame object. Nested documents are not supported at the moment. They will just be the string output. results <- dbGetQuery(mongo, "nutrient_metadatas", "{}", 0, 2) names(results) results <- dbGetQuery(mongo, "nutrient_metadatas", {"nutrient_definition_id": 307})14/12/10 Database Access Through R 11
  • 12. A Few Words about the sqldf Package ● Sqldf provides a way to run SQL statements on R dataframes. ● Sqldf works with the SQLite, H2, and PostgreSQL databases. ● This package allows you to run most SQL commands against an R dataframe: Selects, Joins, Ordering, Grouping, Averaging, etc.14/12/10 Database Access Through R 12
  • 13. Sqldf Example # load sqldf into workspace and execute SELECT queries library(sqldf) sqldf("select * from iris limit 5") sqldf("select count(*) from iris") sqldf("select Species, count(*) from iris group by Species") # example of a JOIN Abbr <- data.frame(Species = levels(iris$Species), + Abbr = c("S", "Ve", "Vi")) sqldf("select Abbr, avg(Sepal_Length) + from iris natural join Abbr group by Species")14/12/10 Database Access Through R 13
  • 14. Thank You “How are you going to run the universe if you cant answer a few unsolvable problems?”14/12/10 Database Access Through R 14

Ă—