Senden - Abrufen - Leeren
Du hast dbGetQuery() jetzt schon mehrfach verwendet. Das ist eine virtuelle Funktion aus dem Paket DBI, wird aber tatsächlich vom Paket RMySQL implementiert. Hinter den Kulissen passieren dabei folgende Schritte:
- Senden der angegebenen Abfrage mit
dbSendQuery(); - Abrufen des Ergebnisses der Abfrage auf der Datenbank mit
dbFetch(); - Leeren des Ergebnisses mit
dbClearResult().
Dieses Mal verwenden wir dbGetQuery() nicht und setzen die obigen Schritte selbst um. Das ist etwas umständlich zu schreiben, gibt dir aber die Möglichkeit, das Ergebnis der Abfrage in Teilstücken statt auf einmal abzurufen. Das erreichst du, indem du in dbFetch() das Argument n angibst.
Diese Übung ist Teil des Kurses
Fortgeschrittenes Importieren von Daten in R
Anleitung zur Übung
- Sieh dir den bereits für dich geschriebenen Aufruf von
dbSendQuery()an. Er wählt die Kommentare für Nutzer mit einer id größer als 4 aus. - Verwende
dbFetch()zweimal. Importiere im ersten Aufruf nur zwei Datensätze des Ergebnis der Abfrage, indem du das Argumentnauf2setzt. Importiere im zweiten Aufruf alle verbleibenden Datensätze (keinnangeben). Gib in beiden Aufrufen die resultierenden Data Frames einfach aus. - Leere
resmitdbClearResult().
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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