第二个RMySQL操作失败 - 为什么?

时间:2010-12-07 10:39:53

标签: mysql r

我正在运行一个脚本,将不同的数据集存储到MySQL数据库中。到目前为止,这是有效的,但只是顺序。 e.g:

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

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

如果我同时选择(我使用StatET / Eclipse)并运行选择,我会收到错误:

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

我想这与我的con在第二个请求开始时仍然很忙的事实有关。当我一行一行地运行脚本时,它运行正常。因此我想知道,我怎么能告诉R等待第一个请求准备就绪然后继续?如何使R脚本交互(只是控制台,如剧情示例 - 没有tcl / tk)。

编辑:

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")
  }  
}

1 个答案:

答案 0 :(得分:1)

dbWriteTable有两个重要的论点:

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’.

对于过去的项目,我已经成功地实现了对这些表的适当组合的追加,覆盖,创建......。