大佬教程收集整理的这篇文章主要介绍了sql – 当结果集很大时,RODBC会丢失datetime的时间值,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
例如,以下工作完美:
@H_805_4@myconn <- odbcConnect(dsnName,uid,pwd) results <- sqlQuery(myconn,"SELECT TOP 100 MyID,MydatetiR_995_11845@ecolumn from myTable ORDER BY MydatetiR_995_11845@ecolumn DESC") close(myconn)在R中,以下按预期工作:
> results$MydatetiR_995_11845@ecolumn[3] [1] "2013-07-01 00:01:22 PDT"
这是一个有效的POSIXct日期时间.但是,当返回介于10,000到100,000行之间时,突然时间部分消失:
@H_805_4@myconn <- odbcConnect(dsnName,pwd) bigResults <- sqlQuery(myconn,"SELECT TOP 100000 MyID,MydatetiR_995_11845@ecolumn from myTable ORDER BY MydatetiR_995_11845@ecolumn DESC") close(myconn)(相同的代码,只返回更多的行;注意:完全相同的行现在已经丢失了它的时间组件),R响应:
> bigResults$MydatetiR_995_11845@ecolumn[3] [1] "2013-07-01 PDT"
请注意,现在缺少时间(这不是一个不同的行;它与前一行完全相同),如下所示:
>strptime(results$triggerTime[3],"%Y-%m-%d %H:%M:%s") [1] "2013-07-01 00:01:22" >strptime(bigResults$triggerTime[3],"%Y-%m-%d %H:%M:%s") [1] NA
显然,解决方法是增量查询 – 附加或导出到CSV和导入到R,但这看起来很奇怪.有没有见过这样的人?
配置:我使用的是最新版本的RODBC(1.3-10),可以复制在Windows x64上运行的R安装和在Mac OS X 10.9(Mavericks)上运行的R安装的行为.
编辑#2根据请求添加dput()输出以比较对象:
> dput(results[1:10,]$MydatetiR_995_11845@ecolumn) structure(c(1396909903.347,1396909894.587,1396909430.903,1396907996.9,1396907590.02,1396906077.887,1396906071.99,1396905537.36,1396905531.413,1396905231.787),class = c("POSIXct","POSIXt"),tzone = "") > dput(bigResults[1:10,]$MydatetiR_995_11845@ecolumn) structure(c(1396854000,1396854000,1396854000),tzone = "")
看起来底层数据实际上是由于查询返回的行数而发生变化,这是完全奇怪的.
以上是大佬教程为你收集整理的sql – 当结果集很大时,RODBC会丢失datetime的时间值全部内容,希望文章能够帮你解决sql – 当结果集很大时,RODBC会丢失datetime的时间值所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。