2015-06-25 110 views
0

我在集成PostgreSQL和R時遇到問題。 我總是將SQL查詢的輸出卸載到.txt文件中,然後使用read.table()函數將em下載到R中。 但是現在我需要直接從我的查詢中獲得輸出結果。 我對我的SQL瞭解多少?這是PostgreSQL,我用膩子連接到數據庫 我也知道,從膩子約我作爲無法通過putty連接R和PostgreSQL

  1. 主機名(或IP地址)
  2. 端口
  3. 保存的會話=「dbcenter」
  4. 連接等信息
  5. ConnectionType = SSH
  6. 關鍵 - 它的文件與.ppk擴展
  7. 密碼此鍵

此外,編寫查詢之前,我在打開的窗口中選擇

  1. 區域
  2. 數據庫

這是我知道的膩子充分的信息和我不知道如何直接編寫查詢中R腳本。我試過RPostgreSQL包,沒有成功。

有人可以幫我嗎?

回答

0

首先,請確保您可以連接到遠程數據庫,而不R,爲 例如,使用pgadmin3或psql的(見本link1link2關於pgAdmin的/ PSQL /遠程/端口轉發更多的想法)。

然後,沿着這些路線嘗試:

dbname <- "myname"; dbuser <- "myname"; dbpass <- "IWillNotTell"; 
dbhost <- "remotehostname"; dbport <- 5432; 

如果遠程主機withing在同一本地網(即本地 主機myhost.host.edu),那麼,下面將正常運行好:

dbhost <- "remote" 

library(RPostgreSQL) 
drv <- dbDriver("PostgreSQL") 
con <- dbConnect(drv, host=dbhost, port=dbport, dbname=dbname, 
       user=dbuser, password=dbpass) 
query = 'SELECT * FROM TABLENAME' 
dbGetQuery(con, query) 
sqldata<-dbGetQuery(con, query) 
summary(sqldata) 

SQLDATA將是一個數據幀

重要的是防火牆和訪問數據庫。我建議,使用 pgadmin3來確保您可以連接到服務器。

如果本地防火牆不允許連接到postgresql服務器 端口,那麼您將需要使用ssh隧道 - 根據遠程主機的遠程連接可能得到 相當慢。例如:

假設服務器允許收聽僅 「本地主機」(這是WRT到 服務器),則:

SSH -L 22222:本地主機:5432 @ MYNAME的remotehostname

將轉發您的客戶端上的22222端口連接到遠程的5432端口。 再次,使用pgadmin3在這一點上,使你可以連接。

然後設置

DBHOST < - 「本地主機」; dbport < - 「22222」

並使用相同的dbConnect調用。 dbConnect調用成功後,所有的sql結果將在R本地