Spalten aus DB auslesen

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Antworten
janedoe

Spalten aus DB auslesen

Beitrag von janedoe »

Hey,

ich habe eine sql-DB zum Einlesen

Code: Alles auswählen

library(RSQLite)
m <- dbDriver("SQLite")
con <- dbConnect(m, dbname = "wind.db")

alltables <- dbListTables(con)
alltables

Leider weiß ich nicht, wie die DB (inkl. Spaltennamen ... ) aufgebaut ist. Wenn ich die Daten mal gesamt einlese

Code: Alles auswählen

daten <- dbGetQuery(con, 'SELECT * FROM wind_mess')
dann schreibt R nach einiger Zeit

Code: Alles auswählen

Error: cannot allocate vector of size 400.0 Mb
aus diese Grund (nehme ich jetzt mal in meiner Unwissenheit an) muss ich die Daten vorher selektieren, was ja kein Problem ist, da ich mir Messwerte nur an bestimmten Tagen ansehe. Dazu muss ich aber wissen, wie meine db aufgebaut ist, damit ich die Abfrage dementsprechend gestalten kann. Anstatt alles rauszuladen, möchte ich die Einschränkung über das Datum machen zB.

Code: Alles auswählen

daten <- dbGetQuery(con, 'SELECT Datum FROM wind_mess')
Jetzt meine Frage, gibt es auch einen Befehl, der mir aus der tabelle wind_mess nur die Spaltennamen raus schreibt, ohne die Daten - aber ev. mit Zuordnung ob es sich dabei um eine CHR oder NUM handelt, ausgibt. Oder gibt es eine andere Art einzulesen, wo ich weniger Resourcen verbrauche?

Vielen lieben Dank
Jane
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Spalten aus DB auslesen

Beitrag von jogo »

Was liefert denn

Code: Alles auswählen

dbGetQuery(con, '.schema wind_mess')
:?:
Gruß, Jörg
janedoe

Re: Spalten aus DB auslesen

Beitrag von janedoe »

Hall Jörg,

vielen Dank für deine schnelle Antwort. Wenn ich die Zeile von dir eingebe, bekomme ich folgende Fehlermeldung:

Code: Alles auswählen

Error in rsqlite_send_query(conn@ptr, statement) : near ".": syntax error
glg. Jane
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Spalten aus DB auslesen

Beitrag von jogo »

vielleicht

Code: Alles auswählen

dbDataType(con, wind_mess)
Falls Du RStudio benutzt:
man kann sehr schön nach den Hilfetexten für Funktionen suchen, von denen man nur weiß, mit welchen Buchstaben sie anfangen.
Da die gesuchte Funktionen wahrscheinlich mit "db..." anfängt, kann man die ersten beiden Buchstaben schon mal in das Suchfeld eintippen und bekommt on-the-fly eine Liste der Funktionen mit diesen Anfangsbuchstaben.

Gruß, Jörg
p.s.:
zumindest funktioniert:

Code: Alles auswählen

library("RSQLite")
example("datasetsDb")
con <- dbConnect(RSQLite::SQLite(), ":memory:")
dbDataType(con, iris)
janedoe

Re: Spalten aus DB auslesen

Beitrag von janedoe »

Das funktioniert leider auch nicht. Jetzt findet R meine Tabelle wind_mess) nicht.

Code: Alles auswählen

Fehler in is.factor(obj): Object 'wind_mess' nicht gefunden
bzw. auch bei

Code: Alles auswählen

con <- dbConnect(RSQLite::SQLite(), "wind.db")
dbDataType(con, wind_mess)
glg
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Spalten aus DB auslesen

Beitrag von EDi »

Das sind aber alles keine r fragen, sondern sql :geek:


Ich würde um die DB kennenzulernen auch nicht R sondern einen DB Manager nutzen.. In R wurde ich mir alles Tabellennamen ausspucken lassen [dbListTables... ], dann mir für jede Tabellen mir die ersten paar Zeilen [SELECT * FROM schema.table LIMIT 6].
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Spalten aus DB auslesen

Beitrag von jogo »

Hallo Jane,

zum Speicherproblem habe ich gerade hier etwas geschrieben:
viewtopic.php?f=7&t=500&p=1935#p1935

Gruß, Jörg
Antworten