R - Datenbanken
Die Daten sind Relationale Datenbanksysteme werden in einem normalisierten Format gespeichert. Um statistische Berechnungen durchführen zu können, benötigen wir sehr fortgeschrittene und komplexe SQL-Abfragen. R kann jedoch problemlos eine Verbindung zu vielen relationalen Datenbanken wie MySQL, Oracle, SQL Server usw. herstellen und Datensätze als Datenrahmen von diesen abrufen. Sobald die Daten in der R-Umgebung verfügbar sind, werden sie zu einem normalen R-Datensatz und können mit allen leistungsstarken Paketen und Funktionen bearbeitet oder analysiert werden.
In diesem Tutorial verwenden wir MySQL als Referenzdatenbank für die Verbindung zu R.
RMySQL-Paket
R verfügt über ein integriertes Paket mit dem Namen "RMySQL", das native Konnektivität zwischen der MySQL-Datenbank bietet. Sie können dieses Paket in der R-Umgebung mit dem folgenden Befehl installieren.
install.packages("RMySQL")
Verbinden von R mit MySql
Sobald das Paket installiert ist, erstellen wir in R ein Verbindungsobjekt, um eine Verbindung zur Datenbank herzustellen. Als Eingabe werden der Benutzername, das Kennwort, der Datenbankname und der Hostname verwendet.
# Create a connection Object to MySQL database.
# We will connect to the sampel database named "sakila" that comes with MySql installation.
mysqlconnection = dbConnect(MySQL(), user = 'root', password = '', dbname = 'sakila',
host = 'localhost')
# List the tables available in this database.
dbListTables(mysqlconnection)
Wenn wir den obigen Code ausführen, wird das folgende Ergebnis erzeugt:
[1] "actor" "actor_info"
[3] "address" "category"
[5] "city" "country"
[7] "customer" "customer_list"
[9] "film" "film_actor"
[11] "film_category" "film_list"
[13] "film_text" "inventory"
[15] "language" "nicer_but_slower_film_list"
[17] "payment" "rental"
[19] "sales_by_film_category" "sales_by_store"
[21] "staff" "staff_list"
[23] "store"
Abfragen der Tabellen
Mit der Funktion können wir die Datenbanktabellen in MySql abfragen dbSendQuery(). Die Abfrage wird in MySql ausgeführt und die Ergebnismenge wird mit dem R zurückgegebenfetch()Funktion. Schließlich wird es als Datenrahmen in R gespeichert.
# Query the "actor" tables to get all the rows.
result = dbSendQuery(mysqlconnection, "select * from actor")
# Store the result in a R data frame object. n = 5 is used to fetch first 5 rows.
data.frame = fetch(result, n = 5)
print(data.fame)
Wenn wir den obigen Code ausführen, wird das folgende Ergebnis erzeugt:
actor_id first_name last_name last_update
1 1 PENELOPE GUINESS 2006-02-15 04:34:33
2 2 NICK WAHLBERG 2006-02-15 04:34:33
3 3 ED CHASE 2006-02-15 04:34:33
4 4 JENNIFER DAVIS 2006-02-15 04:34:33
5 5 JOHNNY LOLLOBRIGIDA 2006-02-15 04:34:33
Abfrage mit Filterklausel
Wir können jede gültige Auswahlabfrage übergeben, um das Ergebnis zu erhalten.
result = dbSendQuery(mysqlconnection, "select * from actor where last_name = 'TORN'")
# Fetch all the records(with n = -1) and store it as a data frame.
data.frame = fetch(result, n = -1)
print(data)
Wenn wir den obigen Code ausführen, wird das folgende Ergebnis erzeugt:
actor_id first_name last_name last_update
1 18 DAN TORN 2006-02-15 04:34:33
2 94 KENNETH TORN 2006-02-15 04:34:33
3 102 WALTER TORN 2006-02-15 04:34:33
Zeilen in den Tabellen aktualisieren
Wir können die Zeilen in einer MySQL-Tabelle aktualisieren, indem wir die Aktualisierungsabfrage an die Funktion dbSendQuery () übergeben.
dbSendQuery(mysqlconnection, "update mtcars set disp = 168.5 where hp = 110")
Nach dem Ausführen des obigen Codes wird die Tabelle in der MySQL-Umgebung aktualisiert.
Einfügen von Daten in die Tabellen
dbSendQuery(mysqlconnection,
"insert into mtcars(row_names, mpg, cyl, disp, hp, drat, wt, qsec, vs, am, gear, carb)
values('New Mazda RX4 Wag', 21, 6, 168.5, 110, 3.9, 2.875, 17.02, 0, 1, 4, 4)"
)
Nach dem Ausführen des obigen Codes sehen wir die in die Tabelle eingefügte Zeile in der MySql-Umgebung.
Erstellen von Tabellen in MySql
Mit der Funktion können wir Tabellen in MySQL erstellen dbWriteTable(). Es überschreibt die Tabelle, falls sie bereits vorhanden ist, und verwendet einen Datenrahmen als Eingabe.
# Create the connection object to the database where we want to create the table.
mysqlconnection = dbConnect(MySQL(), user = 'root', password = '', dbname = 'sakila',
host = 'localhost')
# Use the R data frame "mtcars" to create the table in MySql.
# All the rows of mtcars are taken inot MySql.
dbWriteTable(mysqlconnection, "mtcars", mtcars[, ], overwrite = TRUE)
Nach dem Ausführen des obigen Codes sehen wir die in der MySQL-Umgebung erstellte Tabelle.
Tabellen in MySql löschen
Wir können die Tabellen in der MySql-Datenbank löschen, indem wir die Anweisung drop table an dbSendQuery () übergeben, genauso wie wir sie zum Abfragen von Daten aus Tabellen verwendet haben.
dbSendQuery(mysqlconnection, 'drop table if exists mtcars')
Nach dem Ausführen des obigen Codes können wir sehen, dass die Tabelle in der MySQL-Umgebung gelöscht wird.