RODBC sqlQuery as.is 返回错误结果

Posted

技术标签:

【中文标题】RODBC sqlQuery as.is 返回错误结果【英文标题】:RODBC sqlQuery as.is returning bad results 【发布时间】:2011-05-12 21:52:17 【问题描述】:

我正在尝试将一个 Excel 工作表导入 R。我想从工作表中检索一个(字符)ID 列和几个日期列。以下代码工作正常,但将一列作为日期而不是另一列。我认为这与第二个日期字段中更多的前导列为空有关。

dateFile <- odbcConnectExcel2007(xcelFile)
query <- "SELECT ANIMALID, ST_DATE_TIME, END_DATE_TIME FROM [KNWR_CL$]"
idsAndDates <- sqlQuery(dateFile,query)

所以我现在的计划是将日期列作为字符字段引入,并使用 as.POSIXct 自己转换它们。但是,以下代码仅在 idsAndDates 中生成一行。

dateFile <- odbcConnectExcel2007(xcelFile)
query <- "SELECT ANIMALID, ST_DATE_TIME, END_DATE_TIME FROM [KNWR_CL$]"
idsAndDates <- sqlQuery(dateFile,query,as.is=TRUE,TRUE,TRUE)

我做错了什么?

【问题讨论】:

试试as.is=c(TRUE, TRUE, TRUE) 谢谢。我现在得到所有的行。日期现在是字符字段。但看起来第一个首先转换为日期,然后转换为字符字段。在 excel 中,它们都是 MM/DD/YY HH:MM 格式,但在 R 中,第一个现在是 YYYY-MM-DD HH:MM:SS 格式。这就是我做 as.is 之前的样子。第二个格式类似于 excel。 几张照片:试试na.strings=""believeNRows=FALSE(或两者兼有)。并确保在 Excel 下这些字段是日期(即不存储为文本)。 备案:我无法重现(使用 R-2.13, 32bit)。 这些想法都没有奏效。我正在使用 R-2.11 64 位。我在 32 位 R 中尝试过(使用 odbcConnect),但结果更糟。当您尝试复制它时,结果是哪种字符串类型? YYYY-MM-DD HH... 还是 MM/DD/YY HH...?此外,在我的文件中,第二个日期列在第一个日期之前有 9 个空行。 【参考方案1】:

我不得不继续前进并最终使用 gdata 库(它有效)。不过,我仍然对这个问题的答案感兴趣。

【讨论】:

以上是关于RODBC sqlQuery as.is 返回错误结果的主要内容,如果未能解决你的问题,请参考以下文章

RODBC sqlQuery() 在应该返回 varchar(MAX) 时返回 varchar(255)

RODBC-一个sqlQuery()调用中的多个表[重复]

RODBC:为啥 sqlQuery() 中的空值和仅空格值的值为“NA”?

如何让 sum 函数在 RODBC 中的 SQLquery 中工作

RODBC 在 sqlQuery() 的连接中使用 Data.Frame

R RODBC sqlQuery 和 WHERE 子句搜索时间戳