我有一个sql连接,我获得了使用r中的算法的信息。所以在FTSE100中,我在R中的数据框中得到了算法的结果。
canlSQL<-odbcConnect("Myconnection")
DATE AMSTEOE FTSE100 FRCAC40 DAXINDX
1 03/01/1994 190.76 2 2290.56 2267.98
2 04/01/1994 190.99 3 2274.34 2253.58
3 05/01/1994 191.68 4 2249.55 2233.41
4 06/01/1994 192.21 6 2275.06 2220.22
5 07/01/1994 192.41 3 2307.55 2211.64
6 10/01/1994 192.59 2 2317.25 2233.79
.
.
.
.
1000 10/01/1999 200.59 5 2317.25 2233.79
在SQL中我有一个结构相同但列数更多的表,我想用SQL中的数据框的FTSE100列信息更新SQL中的FTSE_A列。
DATE.REF AMST_A FTSE_A FRCA_A DAX_A COL.1 COL.2 COL.3
1 03/01/1994 190.76 NA 2290.56 2267.98 NA NA NA
2 04/01/1994 190.99 NA 2274.34 2253.58 NA NA NA
3 05/01/1994 191.68 NA 2249.55 2233.41 NA NA NA
4 06/01/1994 192.21 NA 2275.06 2220.22 NA NA NA
5 07/01/1994 192.41 NA 2307.55 2211.64 NA NA NA
6 10/01/1994 192.59 NA 2317.25 2233.79 NA NA NA
.
.
.
.
1000 10/01/1999 200.59 NA 2317.25 2233.79 NA NA NA
所以我希望得到下一个结果:
DATE.REF AMST_A FTSE_A FRCA_A DAX_A COL.1 COL.2 COL.3
1 03/01/1994 190.76 2 2290.56 2267.98 NA NA NA
2 04/01/1994 190.99 3 2274.34 2253.58 NA NA NA
3 05/01/1994 191.68 4 2249.55 2233.41 NA NA NA
4 06/01/1994 192.21 6 2275.06 2220.22 NA NA NA
5 07/01/1994 192.41 3 2307.55 2211.64 NA NA NA
6 10/01/1994 192.59 2 2317.25 2233.79 NA NA NA
.
.
.
.
1000 10/01/1999 200.59 5 2317.25 2233.79 NA NA NA
我试图在R中做下一个:
for(i in 1:1000){
sqlQuery(canlSQL,paste0("UPDATE MYTABLE SET FTSE_A= '",DATAFRAME$FTSE100[i],"'"))
}
我运行代码时没有出错,但在SQL结果中我得到了下一个:
DATE.REF AMST_A FTSE_A FRCA_A DAX_A COL.1 COL.2 COL.3
1 03/01/1994 190.76 5 2290.56 2267.98 NA NA NA
2 04/01/1994 190.99 5 2274.34 2253.58 NA NA NA
3 05/01/1994 191.68 5 2249.55 2233.41 NA NA NA
4 06/01/1994 192.21 5 2275.06 2220.22 NA NA NA
5 07/01/1994 192.41 5 2307.55 2211.64 NA NA NA
6 10/01/1994 192.59 5 2317.25 2233.79 NA NA NA
.
.
.
.
1000 10/01/1999 200.59 5 2317.25 2233.79 NA NA NA
我不需要where条件,因为如果我使用WHERE条件我可能得到重复的FTSE_A结果,则列没有唯一值来传递FTSE100的唯一结果。实际上,当我使用WHERE条件时,我会在错误的位置获取值。
我需要更新SQL表中的FTSE_A列,有些人知道如何使用R中获得的结果更新它,但只知道FTSE_A列?