2016-10-28 6 views
1

Ich habe viele Tabelle, die ich auf einem MariaDb in AWS RDS speichern. Ich kann die Tabellen manuell speichern. Ich möchte jedoch eine Schleife erstellen und ich kann die Syntax für den Befehl dbWriteTable nicht herausfinden. Bibliothek (RMySQL)r dbWriteTable in Schleife

dbWriteTable(con, "Account" , Account, overwrite = T) 
dbWriteTable(con, "Campaign", Campaign, overwrite = T) 
dbWriteTable(con, "Contact" , Contact, overwrite = T) 
dbWriteTable(con, "User", User, overwrite =T) 

Stattdessen würde Ich mag es in einer Schleife tun.

nm = c("Account", "Campaign", "Contact", "User") 

for (i in 1:length(nm)) { 

    dbWriteTable(con, nm[i], paste(nm[i]), overwrite = TRUE) 
} 
+0

Versuchen 'get (nm [i])' statt 'paste'. – Zach

+0

Ich erhalte einen Fehler in eval (Ersatz (Ausdruck), envir, enclos): externen Zeiger ist nicht gültig. Ich habe festgestellt, dass die dbWriteTable ist finicky –

+1

aus irgendeinem Grund wird get0() funktioniert, aber get() funktioniert nicht. Danke für den Tipp –

Antwort

2

Per obigen Ausführungen, mit get0 statt paste wie so funktionieren:

nm = c("Account", "Campaign", "Contact", "User") 

for (i in 1:length(nm)) { 
    dbWriteTable(con, nm[i], get0(nm[i]), overwrite = TRUE) 
} 
0

Versuchen Sie stattdessen:

for (i in nm){ 
    dbWriteTable(con, i, paste(i), overwrite = TRUE) 
} 

Sie brauchen nicht die i aus der ursprünglichen Liste mit Klammern zu extrahieren, weil ich in der Liste direkt das Objekt darstellt. Im Wesentlichen sagst du für jede Instanz in nm, schreibe in die db-Tabelle mit dem Namen i (die eines der Wörter in deiner Liste sein wird) und füge den Wert von i als Namen ein.

+0

Ich bekomme den Fehler. Fehler in Datei (Datei, "rt"): kann die Verbindung nicht öffnen Zusätzlich: Warnmeldung: In Datei (Datei, "rt"): kann Datei 'Konto' nicht öffnen: Keine solche Datei oder Verzeichnis. Es ist wie das data.frame kann nicht gefunden werden .. Ich habe so viele verschiedene Dinge ausprobiert ... –

+0

Sorry, es war keine Hilfe. Da ich die Dateien nicht überschreiben konnte, konnte ich nicht testen. Ich lief die Schleife mit Abzügen und kehrt zurück. Aber das klingt wie ein Problem mit dem Arbeitsverzeichnis-Verzeichnis ... vielleicht 'setwd (" dein/directory/here ")' – sconfluentus