Send - Fetch - Clear
Je hebt dbGetQuery() nu meerdere keren gebruikt. Dit is een virtuele functie uit het DBI-pakket, maar wordt in werkelijkheid geïmplementeerd door het RMySQL-pakket. Achter de schermen worden de volgende stappen uitgevoerd:
- De opgegeven query verzenden met
dbSendQuery(); - Het resultaat van het uitvoeren van de query op de database ophalen met
dbFetch(); - Het resultaat opruimen met
dbClearResult().
Laten we deze keer dbGetQuery() niet gebruiken en de bovenstaande stappen zelf uitvoeren. Dit is wat omslachtig om te schrijven, maar het geeft je de mogelijkheid om het queryresultaat in stukken op te halen in plaats van alles in één keer. Dat kan door het argument n in dbFetch() te specificeren.
Deze oefening maakt deel uit van de cursus
Gevorderd data importeren in R
Oefeninstructies
- Bekijk de
dbSendQuery()-aanroep die al voor je is gecodeerd. Hij selecteert de comments voor de gebruikers met een id groter dan 4. - Gebruik
dbFetch()twee keer. Haal in de eerste aanroep slechts twee records van het queryresultaat op door het argumentnop2te zetten. Haal in de tweede aanroep alle resterende records op (specificeernniet). Print in beide aanroepen simpelweg de resulterende data frames. - Ruim
resop metdbClearResult().
Interactieve oefening met praktijkervaring
Probeer deze oefening door deze voorbeeldcode aan te vullen.
# Connect to the database
library(DBI)
con <- dbConnect(RMySQL::MySQL(),
dbname = "tweater",
host = "courses.csrrinzqubik.us-east-1.rds.amazonaws.com",
port = 3306,
user = "student",
password = "datacamp")
# Send query to the database
res <- dbSendQuery(con, "SELECT * FROM comments WHERE user_id > 4")
# Use dbFetch() twice
# Clear res