Seite 1 von 1

Spalten aus DB auslesen

Verfasst: Fr Jul 21, 2017 11:24 am
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

Re: Spalten aus DB auslesen

Verfasst: Fr Jul 21, 2017 11:36 am
von jogo
Was liefert denn

Code: Alles auswählen

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

Re: Spalten aus DB auslesen

Verfasst: Fr Jul 21, 2017 11:54 am
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

Re: Spalten aus DB auslesen

Verfasst: Fr Jul 21, 2017 12:34 pm
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)

Re: Spalten aus DB auslesen

Verfasst: Fr Jul 21, 2017 12:56 pm
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

Re: Spalten aus DB auslesen

Verfasst: Fr Jul 21, 2017 10:46 pm
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].

Re: Spalten aus DB auslesen

Verfasst: Mo Jul 24, 2017 9:24 am
von jogo
Hallo Jane,

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

Gruß, Jörg