使用odbc::dbWriteTable追加数据时报错:无效列名'row_names'
解决odbc::dbWriteTable()追加数据时出现'row_names'列错误的问题
问题原因
odbc::dbWriteTable() 底层依赖DBI的处理逻辑,默认会把dataframe的行名(哪怕是R自动生成的整数序列行名)作为名为row_names的列尝试插入目标SQL表。你的目标表不存在这个列,因此触发了"Invalid column name 'row_names'"的错误。
解决方法
在调用dbWriteTable()时显式添加row.names = FALSE参数,强制函数忽略dataframe的行名,只写入数据列。
修改后的代码:
odbc::dbWriteTable( connection, DBI::SQL(glue("{database}.{schema}.{table}")), value = dataframe, append = TRUE, row.names = FALSE )
额外验证(可选)
若担心dataframe存在自定义行名,可通过rownames(dataframe)查看;若确实不需要,也可以提前用rownames(dataframe) <- NULL清除,但只需添加row.names = FALSE参数就足够解决问题,无需额外操作。
内容的提问来源于stack exchange,提问作者Guest007
相关产品推荐
相关产品推荐

