Re: [問題] RODBC做sqlQuery時,時間條件的設定
※ 引述《giock18 (小武)》之銘言:
: [問題類型]:
: 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
:
: [軟體熟悉度]:
: 入門(寫過其他程式,只是對語法不熟悉)
: [問題敘述]:
: 我想使用R的RODBC跟ORACLE資料庫相聯,並且撈回上個月月份的資料。
: 在我的資料表表單中,有一欄ACTDATE記錄時間,R讀取時是POSIXct格式
: 假設我想抓上個月份的資料,我該怎麼做?
: [程式範例]:
: 程式不長我直接貼
: Sys.setenv(TZ = "UTC") #設定時間
: dataframe <- sqlQuery(conn, "SELECT ACTDATE,SECTOR,STD,STA
: FROM TABLE
: where months(ACTDATE) = months(Sys.Date())-1
: Order by ACTDATE ")
同時比較年跟月的話可以用 trunc 代替
如果用ROracle可以這樣寫:
library(ROracle)
Sys.setenv(TZ = "Asia/Taipei", ORA_SDTZ = "Asia/Taipei")
df <- dbGetQuery(conn, "SELECT ACTDATE,SECTOR,STD,STA FROM TABLE
where trunc(ACTDATE, 'MM') = trunc(:SYS_DATE, 'MM')-1
order by ACTDATE", data.frmae(SYS_DATE = Sys.Date()))
但是其實Oracle SQL改成下面這樣就可以跑了:
SELECT ACTDATE,SECTOR,STD,STA FROM TABLE
where trunc(ACTDATE, 'MM') = trunc(SYSDATE, 'MM') - 1
order by ACTDATE
ROracle其他好處像是:
1. 不需要像是ODBC要去config系統參數,直接使用TNSNAME就可以連線
2. 更多方便的API可以使用
3. 效能比RODBC好
其他參考這篇:
https://blogs.oracle.com/R/entry/r_to_oracle_database_connectivity
我寫過一篇相關的blogger,可以參考一下:https://goo.gl/2avjU2
但是是在linux上編譯
--
R資料整理套件系列文:
magrittr #1LhSWhpH (R_Language) https://goo.gl/72l1m9
data.table #1LhW7Tvj (R_Language) https://goo.gl/PZa6Ue
dplyr(上.下) #1LhpJCfB,#1Lhw8b-s (R_Language) https://goo.gl/I5xX9b
tidyr #1Liqls1R (R_Language) https://goo.gl/i7yzAz
pipeR #1NXESRm5 (R_Language) https://goo.gl/zRUISx
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.246.26.70
※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1492178863.A.5D8.html
推
04/14 22:26, , 1F
04/14 22:26, 1F
我不知道耶,我一開始就直接摒棄RODBC了XD 直接奔向ROracle懷抱
我對設定那些ODBC感到不耐煩... ROracle真的太方便XD
※ 編輯: celestialgod (111.246.26.70), 04/14/2017 22:51:33
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
R_Language 近期熱門文章
PTT數位生活區 即時熱門文章