使用r中的数据帧信息更新sql表中的特定列

时间:2016-12-27 05:31:29

标签: sql r odbc rodbc

我有一个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列?

0 个答案:

没有答案