如何在sqlSave()命令中跳过主键?

时间:2011-06-15 05:58:11

标签: mysql r rodbc

我正在尝试使用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()来避免这种情况吗?

提前致谢。

2 个答案:

答案 0 :(得分:1)

您可以尝试在数据框中添加第七列,并为PK列数据指定NULL0的值。然后MySQL会自动为它生成值。

答案 1 :(得分:0)

使用sqlUpdate以便根据匹配的主键更新行。如果你真的想要追加,你需要在写入数据库之前为新行创建唯一的ID。这在R中非常简单,但您需要确保它们对于数据库中已有的以及R中的新数据是唯一的。