rsqlite_send_query(conn@ptr,statement)错误:重复列名:Ret

kdfy810k  于 7个月前  发布在  SQLite
关注(0)|答案(1)|浏览(61)

我有一堆SQL查询,工作正常,但现在,由于某种原因,不工作了。数据没有改变。代码没有改变。
我一直收到这个错误消息:
rsqlite_send_query(conn@ptr,statement)错误:重复列名:Ret
这些错误往往发生在左连接。下面是一个例子:

g.cper<-sqldf("select a.*, b.NAV_EUR, b.AUM_EUR
           from g2_c as a
            left join 
            nav_master as b
            on a.fund_id=b.fund_id and a.period = b.period")

字符串
这些表都不包含名为“Ret”的变量
我最近更新了所有的软件包。
这是遗留代码。我倾向于在可能的情况下使用djr::left_join。但left_join永远不会做SQL中左连接可以实现的事情(不平等作为约束等)。
这些是我加载的包:
packages <- c(“ISLR”,“gam”,“biglm”,“dozr”,“gtools”,“tidyr”,“randomForest”,“splines”,“tree”,“pROC”,“lfe”,“lubridate”,“stargazer”,“scales”,“ggplot2”,“scales”,“data.table”,“zoo”,“PerformanceAnalytics”,“stats”,“proto”,“timeSeries”,“timeDate”,“gsubfn”,“fBasics”,“DBI”,“RSQLite”,“sqldf”,“RODBC”,“tcltk”,“reshape”、“xts”、“data.table”、“parallel”、“lfe”、“readr”、“purrr”、“tibble”、“hms”、“stringr”、“lubridate”、“forcats”)
这是我的sessioninfo():
sessionInfo()R版本3.3.3(2017-03-06)平台:x86_64-redhat-linux-gnu(64位)运行环境:Red Hat Enterprise Linux Server 7.3(Maipo)
locale:1 LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
LC_TIME=en_US.UTF-8 [4] LC_COLLATE=en_US.UTF-8
LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 [7] LC_PAPER=en_US.UTF-8 LC_NAME=C LC_ADDRESS=C
[10]LC_TELEPHONE=C LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
附加基础软件包:1平行tcltk样条曲线统计
grdevices utils datasets方法库
其他附加软件包:1 forcats_0.2.0
stringr_1.2.0 hms_0.3 [4] tibble_1.2 purrr_0.2.2
readr_1.0.0 [7] reshape_0.8.6
RODBC_1.3-14 sqldf_0.4-10 [10] RSQLite_1.1-2 fBasics_3011.87
gsubfn_0.6-6 [13] timeSeries_3022.101.2
timeDate_3012.100 proto_1.0.0 [16] PerformanceAnalytics_1.4.3541 xts_0.9-7 zoo_1.7-14 [19] data.table_1.10.4 ggplot2_2.2.1
[22] 2016年中国国际航空航天博览会
Lubridate_1.6.0 lfe_2.5-1998 [25] Matrix_1.2-8 pROC_1.9.1
[28] 2016年10月28日星期一
tidyr_0.6.1 gtools_3.5.0 [31] dplyr_0.5.0 biglm_0.9-1 DBI_0.5-1 [34] gam_1.14 foreach_1.4.3
ISLR_1.0
通过命名空间加载(未附加):1 reshape2_1.4.2
lattice_0.20-34 colorspace_1.3-2 chron_2.3-50 plyr_1.8.4
munsell_0.4.3 [7] gtable_0.2.0 codetools_0.2-15 memoise_1.0.0 labeling_0.3 Rcpp_0.12.9 xtable_1.8-2 [13] xtable_0.6.12 stringi_1.1.2 grid_3.3.3 tools_3.3.3 xtable_2.3 -4
magrittr_1.5 [19] lazyeval_0.2.0 Formula_1.2-1 assertthat_0.1 iterators_1.0.8 R6_2.2.0
不确定这是否与this question有关请记住,我使用的是RSQLite_1.1-2(早于2.0)
我真的不知道发生了什么事,也没有在网上找到任何东西。

**UPDATE I:**我已经升级到sqldf_0.4-11和RSQLite_2.0了....还是有这个问题。我也试过加载sqldf(和依赖项)....代码还是不行
更新二:首先,我要感谢G. Grothendieck在这个问题上的帮助和他多年来对R的贡献。

在这个特定的问题上,我尝试使用mtcars运行一个测试查询。这是代码:
第一个月

此查询成功!!!.然后我运行了即使在更新到sqldf 0.4.11和RSQLite 2.0后也无法工作的代码(请参阅更新I)。令我惊讶的是,它现在可以工作了!!!...我不知道发生了什么,但我所有的sqldf查询现在都可以工作了。仅供参考...我在AWS工作............我有时会遇到这些无法解释的奇怪事情...
UPDATE III问题又回来了。所以我再次在更新II中运行测试代码。这很有效。在运行测试代码之后,我所有的sqldf连接再次工作....去图

r1wp621o

r1wp621o1#

在这个可重复的示例中(使用sqldf 0.4.11和RSQLiute 2.0),它按预期工作。

library(sqldf)

g2_c <- nav_master <- data.frame(fund_id = 1:2, period = 1:2, NAV_EUR = 0, AUM_EUR = 0)
sqldf("select a.*, b.NAV_EUR, b.AUM_EUR
       from g2_c as a
       left join nav_master as b
         on a.fund_id=b.fund_id and a.period = b.period")

字符串
给出:

fund_id period NAV_EUR AUM_EUR NAV_EUR AUM_EUR
1       1      1       0       0       0       0
2       2      2       0       0       0       0

相关问题