我有下面的R数据
Sl NO Name Marks
1 A 15
2 B 20
3 C 25我有一个mysql表如下所示。(Score.table)
No CandidateName Score
1 AA 1
2 BB 2
3 CC 3我使用以下代码将我的数据写入Score.table
username='username'
password='userpass'
dbname='cdb'
hostname='***.***.***.***'
cdbconnection = dbConnect(MySQL(), user=username, password=userpass,
dbname=dbname, host=hostname)接下来,我们将数据格式写入表,如下所示
score.table<-'score.table'
dbWriteTable(cdbconn, score.table, dataframe, append =F, overwrite=T).代码运行,我得到了作为输出的真。但是,当我检查SQL表时,新值还没有覆盖现有的值。我请求别人帮助我。密码有效。我已经重新安装了RMySQL包,并重新运行,结果是一样的。
发布于 2017-12-27 06:51:53
该更新没有发生,表示RMySQL包无法成功地将数据帧中的任何行映射到表中已有的记录。因此,这意味着您对dbWriteTable的调用有问题。我看到的两个潜在问题是,您没有为field.types或row.names赋值。考虑打以下电话:
score.table <- 'score.table'
dbWriteTable(cdbconn, score.table, dataframe,
field.types=list(`Sl NO`="int", Name="varchar(55)", Marks="int"),
row.names=FALSE)如果省略field.types,则包将尝试推断类型。我不是这个包的专家,所以我不知道这个推断有多强,但是您很可能希望为复杂的更新查询指定显式类型。
更大的问题可能实际上不是为row.names指定一个值。它可以默认为TRUE,在这种情况下,包实际上会在更新期间发送额外的列。这可能会导致问题,例如,如果目标表有三列,而数据帧也有三列,那么您将尝试用四列进行更新。
https://stackoverflow.com/questions/47987429
复制相似问题