我尝试使用RODBC包中的sqlSave
方法将记录追加到现有的SQL表中。
df <- data.frame(EmployeeID = c(NA, NA, NA), EmployeeName=c("Bob", "Sue", "Jane"))
sqlSave(myconn, dat=df, tablename = "Employees", append = TRUE, rownames = FALSE, colnames = FALSE, verbose = TRUE, safer = TRUE,
addPK = FALSE, typeInfo, varTypes, fast = TRUE, test = FALSE, nastring = NULL)
但是,我一直收到错误
[RODBC] Update中的exec失败 23000 544 [Microsoft] [ODBC SQL Server驱动程序] [SQL Server]无法在表&#39; Employees&#39;中为标识列插入显式值。当IDENTITY_INSERT设置为OFF时。
我的表应该自动创建ID。是什么给了什么?
答案 0 :(得分:2)
添加此答案,因为我找到了问题的黑客解决方法。
打开Identity_Insert
sqlQuery(myconn,“Set Identity_Insert Employees On”,errors = TRUE)
执行sqlSave查询。这里的问题是你需要手动插入ID,这意味着你要负责验证它们的唯一性和顺序性。在我的情况下,我知道在插入之前我的表格将为空,因此我可以将rownames
和addPK
设置为TRUE。
sqlSave(myconn,dat = df,tablename =“Employees”,append = TRUE,rownames = TRUE,colnames = FALSE,verbose = TRUE,safer = TRUE,addPK = TRUE,typeInfo,varTypes,fast = TRUE,test = FALSE,nastring = NULL)
将Identity_Insert关闭
sqlQuery(myconn,“Set Identity_Insert Employees Off”,errors = TRUE)