gpt4 book ai didi

mysql - 为什么将数据追加到现有表时,RODBC 包中的 sqlSave 会失败?

转载 作者:行者123 更新时间:2023-11-30 23:10:38 26 4
gpt4 key购买 nike

我在 mysql 数据库中创建了一个具有以下规范的空表

    Field          Type Null Key           Default                       Extra
1 Id int(11) NO PRI <NA> auto_increment
2 Date timestamp NO CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP
3 Country varchar(45) YES <NA>
4 Brand varchar(45) YES <NA>
5 Value decimal(10,0) YES <NA>

现在我想使用 RODBC 包中的 sqlSave 将数据框中的数据附加到该表。我的数据框看起来像这样

     Id       Date Country  Brand Value
591 591 2013-06-22 DK bet365 44
603 603 2013-09-14 DK bet365 69
362 362 2009-01-31 DK bet365 22
296 296 2013-08-31 DK unibet 33
216 216 2012-02-18 DK unibet 24
261 261 2012-12-29 DK unibet 28
326 326 2008-05-24 DK bet365 18
521 521 2012-02-18 DK bet365 71
494 494 2011-08-13 DK bet365 44
558 558 2012-11-03 DK bet365 68

并且可以通过

重新创建
mydf<-structure(list(Id = c(591L, 603L, 362L, 296L, 216L, 261L, 326L, 521L, 494L, 558L), 
Date = c("2013-06-22", "2013-09-14", "2009-01-31", "2013-08-31", "2012-02-18", "2012-12-29", "2008-05-24", "2012-02-18", "2011-08-13", "2012-11-03"), Country = c("DK", "DK", "DK", "DK", "DK", "DK", "DK", "DK", "DK", "DK"),
Brand = structure(c(2L, 2L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 2L),
.Label = c("unibet", "bet365", "betsafe"),
class = "factor"),
Value = c(44, 69, 22, 33, 24, 28, 18, 71, 44, 68)),
.Names = c("Id", "Date", "Country", "Brand", "Value"),
row.names = c(591L, 603L, 362L, 296L, 216L, 261L, 326L, 521L, 494L, 558L),
class = "data.frame")

然后我运行下面的命令

sqlSave(channel, dat=mydf, tablename="GoogleTrends", rownames=FALSE, append=TRUE)

导致错误:

Error in odbcUpdate(channel, query, mydata, coldata[m, ], test = test,  : 
missing columns in »data«

我已经尝试添加 varTypes,但仍然没有成功。我也尝试过使用 sqlUpdate,但也无法使其正常工作。明确地说,如果我允许 sqlSave 自己创建表,我可以轻松地完成这项工作。所以我猜有一些转换问题,但我无法检测到它。任何人都知道如何解决这个问题?

最佳答案

请问您是如何定义 varTypes 的?我认为使用 varTypes 会起作用。我要做的是从已经创建的表中检索变量类型,并让 R 映射到它。在 R 中,您可以使用类似 tmp <- sqlColumns(channel, tablename) 的方法获取已经创建的表的 vartypes,而您想要的是 varspec <- tmp$TYPE_NAME。

关于mysql - 为什么将数据追加到现有表时,RODBC 包中的 sqlSave 会失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19905032/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com