我正在尝试使用dbWriteTable
方法将新数据附加到已存在的MySQL表中。我在过去使用过它没有问题,但它现在失败了因为表已经存在。这是尽管使用overwrite=FALSE, append=TRUE,
代码:
full_sum_table <- 'mydb.summary'
dbWriteTable(conn=open_connection, name=full_sum_table, value=summary_data_final, overwrite=FALSE, append=TRUE, row.names=0)
Error in mysqlExecStatement(conn, statement, ...) :
RS-DBI driver: (could not run statement: Table 'summary' already exists)
[1] FALSE
Warning message:
In mysqlWriteTable(conn, name, value, ...) :
could not create table: aborting mysqlWriteTable
此代码的第一次调用正常,但后续调用失败。
任何想法都将不胜感激。感谢
环境:
R version 3.0.2
Packages: DBI (I was using RMySQL but it is not available for 3.0.2)
MySQL v5.6.14
OS: Windows Server 7
答案 0 :(得分:3)
作者在问题中列出了此解决方案,并已移至此处。
只有在使用完整的表格路径(例如myDB.temp_table
与简单temp_table
> dbWriteTable(conn=open_connection, name='myDB.temp_table', value=summary_data_final, overwrite=FALSE, append=TRUE, row.names=0)
Error in mysqlExecStatement(conn, statement, ...) :
RS-DBI driver: (could not run statement: Table 'temp_table' already exists)
[1] FALSE
Warning message:
In mysqlWriteTable(conn, name, value, ...) :
could not create table: aborting mysqlWriteTable
> dbWriteTable(conn=open_connection, name='temp_table', value=summary_data_final, overwrite=FALSE, append=TRUE, row.names=0)
[1] TRUE
我还没有在任何地方找到这个记录,并且我很惊讶我之前没有遇到它。
答案 1 :(得分:0)
只需使用此功能即可在表格中插入一行
insert_row <- function(jconn,table_name,col_data,data){
dbSendUpdate(jconn,paste0("INSERT INTO ",table_name," (",paste0(col_data,collapse=','),") VALUES ('",paste0(data,collapse="','"),"');"))
print('data inserted')}