我正在尝试使用RODBC在MySQL数据库中插入data.frame。我正在使用的命令如下:
sqlSave(channel,dbData,tablename='table_name', append=TRUE,safer=TRUE,fast=FALSE,verbose=TRUE)
现在我尝试插入数据的表有一个自动递增的主键。我的表共有7列,包括主键。在我的数据框中,我有6列,因为我不想自己插入PK。但是,当我运行该命令时,我收到以下错误:
23000 1062 [MySQL][ODBC 5.1 Driver][mysqld-5.5.13]Duplicate entry '1' for key 'PRIMARY'
从上面的错误中,我知道它已经尝试插入'1'作为主键,当已经存在1作为其PK的记录时。知道如何使用sqlSave()来避免这种情况吗?
提前致谢。
答案 0 :(得分:1)
您可以尝试在数据框中添加第七列,并为PK列数据指定NULL
或0
的值。然后MySQL会自动为它生成值。
答案 1 :(得分:0)
使用sqlUpdate
以便根据匹配的主键更新行。如果你真的想要追加,你需要在写入数据库之前为新行创建唯一的ID。这在R中非常简单,但您需要确保它们对于数据库中已有的以及R中的新数据是唯一的。