【问题标题】:SqlSave Error: Unable to append to tableSqlSave 错误:无法追加到表
【发布时间】:2017-06-06 00:28:46
【问题描述】:

代码:

sqlSave(SQL,data.frame(df),tablename='Data',append = TRUE,rownames = FALSE)

我试图插入数据的表有一个自动递增的主键。我的表共有 5 列,包括主键。在我的数据框中,我有 4 列,因为我不想自己插入 PK。但是,当我运行命令时,出现以下错误:

colnames<-(*tmp*, value = c("BId", "name", "Set", 中的错误: 'dimnames' [2] 的长度不等于数组范围

另外,当我自己在数据框中插入主键时,它仍然不起作用。

sqlSave(SQL, data.frame(df), tablename = "Data", 中的错误: 无法附加到表“数据”

【问题讨论】:

  • 该错误与sqlSave 无关。 df的内容是什么?运行str(data.frame(df)),因为您可能在列中有嵌套列表。显示 df 的来源。
  • 列中没有嵌套列表。它是使用数据库中的另一个表创建的 df,我试图附加一个不同的表。
  • 另外,做了很多研究,但没有帖子提供使用 Sqlsave 附加包含 PK 的数据帧的解决方案。它适用于没有 PK 的表
  • 您在哪个后端数据库上使用 RODBC?甲骨文? SQL 服务器? DB2?微软访问?你可以创建临时表吗?
  • SQL 服务器。我不想创建表格而是追加数据。

标签: sql r append primary-key


【解决方案1】:

试试safer = FALSE

sqlSave的定义

if (!append) {
    if (safer) 
        stop("table ", sQuote(tablename), " already exists")
        ......
    }
    ......
if (safer) 
    stop("unable to append to table ", sQuote(tablename))

【讨论】:

  • 这将删除表格。
【解决方案2】:

您可以使用详细参数来获取实际的数据库错误。

sqlsave(con, df, verbose = T)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-28
    • 1970-01-01
    • 2020-01-24
    • 2011-11-05
    • 2023-03-27
    相关资源
    最近更新 更多