How to skip primary key in sqlSave() command?

我是研究僧i 提交于 2019-12-23 12:48:11

问题


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 table 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.


回答1:


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.




回答2:


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.



来源:https://stackoverflow.com/questions/6353644/how-to-skip-primary-key-in-sqlsave-command

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!