开发者

How to skip primary key in sqlSave() command?

I am trying to insert a data.frame in the MySQL database using RODBC. The command I am using is the following:

sqlSave(channel,dbData,tablename='table_name', append=TRUE,safer=TRUE,fast=FALSE,verbose=TRUE)

Now the t开发者_高级运维able in which I am trying to insert the data has a primary key which is auto-increment. My table has total of 7 columns including the primary key. In my data frame, I have 6 columns because I don't want to insert the PK myself. However when I run the command, I get the following error:

23000 1062 [MySQL][ODBC 5.1 Driver][mysqld-5.5.13]Duplicate entry '1' for key 'PRIMARY'

From the above error, I understand that it is trying to insert '1' as the primary key when there is already a record with 1 as its PK. Any idea how I can avoid this using sqlSave()?

Thanks in advance.


You can try adding seventh column in your dataframe, and assing value of NULL or 0 for PK column data. Then MySQL will generate value for it automatically.


Use sqlUpdate so that this will update rows based on the matching primary key. If you really want to append you'll need to create unique ids for the new rows before writing to the database. This is pretty simple in R but you will need to ensure they are unique against what is already in the db as well as in your new data in R.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜