栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何使用RODBC将数据帧保存到具有数据库生成的主键的表中

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何使用RODBC将数据帧保存到具有数据库生成的主键的表中

问题是http://github.com/cran/RODBC/blob/master/R/sql.R中的361行-data.frame和DB表必须具有完全相同的列数,否则将出现此错误此堆栈跟踪:

Error in dimnames(x) <- dn :   length of 'dimnames' [2] not equal to array extent 3. `colnames<-`(`*tmp*`, value = c("ID", "FirstName", "LastName",    "Birthday", "CreateDate")) at sql.R#3612. sqlwrite(channel, tablename, dat, verbose = verbose, fast = fast,    test = test, nastring = nastring) at sql.R#2111. sqlSave(db2, results, append = TRUE, varTypes = c(Birthday = "datetime",     CreateDate = "datetime"), colnames = FALSE, rownames = FALSE,     fast = FALSE, verbose = TRUE)

如果将ID列添加到您的ID列中,

data.frame
则无法再使用
autoinc
ID列,因此这不是解决方案(或解决方法)。

对于“相同列”的限制,一种“简单”的解决方法

RODBC::sqlSave
是:

  1. 使用
    sqlSave
    新的行保存到另一个表名
  2. 发送
    insert into ... select from ...
    通孔
    RODBC::sqlQuery
    以将新行追加到包含autoinc ID列的原始表中
  3. 再次删除带有新行的表格(
    drop table...

更好的选择是使用新的

odbc
程序包,该程序包也可以通过类似批量的插入来提供更好的性能,而不是
insert
像单行那样发送单个语句
RODBC

https://github.com/r-dbi/odbc

寻找功能

dbWriteTable
(这是interface的实现
DBI::dbWriteTable
)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/574892.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号