4

我正在尝试使用 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 作为其 PK 时,它试图插入“1”作为主键。知道如何使用 sqlSave() 来避免这种情况吗?

提前致谢。

4

2 回答 2

1

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

于 2011-06-15T06:16:48.900 回答
0

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

于 2011-06-15T06:11:29.857 回答