2010-12-07 17 views
1

Ich führe ein Skript, das verschiedene Datensätze in einer MySQL-Datenbank speichert. Dies funktioniert bisher, aber nur sequentiell. zB:Zweiter RMySQL-Vorgang schlägt fehl - warum?

# write table1 
replaceTable(con,tbl="table1",dframe=dframe1) 

# write table2 
replaceTable(con,tbl="table2",dframe=dframe2) 

Wenn ich beide wählen (ich verwende StatET/Eclipse) und die Auswahl läuft, bekomme ich eine Fehlermeldung:

Error in function (classes, fdef, mtable) : 
    unable to find an inherited method for function "dbWriteTable", 
    for signature "MySQLConnection", "data.frame", "data.frame". 

Ich denke, dies mit der Tatsache zu tun hat, dass mein con immer noch beschäftigt oder so, wenn die zweite Anfrage gestartet wird. Wenn ich das Skript Zeile um Zeile durchführe, funktioniert es einfach. Daher frage ich mich, wie kann ich R sagen, zu warten, bis die erste Anfrage fertig ist und dann weitermachen? Wie kann ich R Skripte interaktiv machen (nur Konsolen wie Plot Beispiele - kein Tcl/Tk).

EDIT:

require(RMySQL) 

replaceTable <- function(con,tbl,dframe){ 
    if(dbExistsTable(con,tbl)){ 
    dbRemoveTable(con,tbl) 
    dbWriteTable(con,tbl,dframe)  
    cat("Existing database table updated/overwritten.") 
    } 
    else { 
    dbWriteTable(con,tbl,dframe) 
    cat("New database table created") 
    } 
} 
+0

Woher kommt die Funktion replaceTable? Es ist nicht in der DBI-Schnittstelle! –

+0

sry. hat meinen Beitrag bearbeitet. –

+0

Probieren Sie 'help (" replaceTable ")', oder zweitbeste, erhalten Sie den Quellentyp 'replaceTable'. –

Antwort

1

dbWriteTable hat zwei wichtige Argumente:

overwrite: a logical specifying whether to overwrite an existing table 
      or not. Its default is ‘FALSE’. 

    append: a logical specifying whether to append to an existing table 
      in the DBMS. Its default is ‘FALSE’. 

Für Vergangenheit Projekt habe ich erfolgreich achieve anhängen, Überschreiben, Erstellen, ... von Tabellen mit dem richtigen Kombinationen davon.

+0

Das ist mein Problem so oft. Ich schreibe meine eigenen Funktionen für eine Aufgabe und stelle später fest, dass es bereits eine Standardlösung oder zumindest eine in einem anderen Paket gibt. –

Verwandte Themen