2010-07-21 103 views
3

這可能會是一個尚未得以確認的問題,因爲我不是在尋找一個特定的修復:計劃作業R和SQL服務器

我想在SQL Server上運行的一些數據的機器學習算法數據庫。我想用R來進行計算 - 這涉及到使用R連接到數據庫,處理數據並將結果表寫回數據庫。

這可能嗎?我的猜測是肯定的。使用客戶端不應該是一個問題...但是,是否有可能將它設置爲一個cron作業在Linux機器上?

回答

5

對所有人都是!

您對腳本的選擇是Rscript或littler,如in this previous post所述。

一直在努力從Linux連接到MSSQL數據庫,我建議使用RJDBC來連接到MSSQL的數據庫。我使用RODBC從Windows進行連接,但是我始終無法在Linux中正常工作。爲了讓RJDBC能夠正常工作,您需要在您的Linux機器上正確安裝Java,並且可能需要更改一些環境變量(似乎我總是將SOMETHING與rJava配置錯誤)。您還需要下載並安裝適用於Linux的JDBC驅動程序,您可以獲得directly from Microsoft

一旦你安裝RJDBC並安裝驅動程序,從數據庫中提取數據看起來像下面的模板代碼:

require(RJDBC) 
drv <- JDBC("com.microsoft.sqlserver.jdbc.SQLServerDriver", 
      "/etc/sqljdbc_2.0/sqljdbc4.jar") 
conn <- dbConnect(drv, "jdbc:sqlserver://mySqlServer", "userId", "Password") 
sqlText <- paste(" 
    SELECT * 
    FROM SomeTable 
     ;") 
myData <- dbGetQuery(conn, sqlText) 

你可以寫一個表像

dbWriteTable(conn, "myData", SomeTable, overwrite=TRUE) 

當我更新我的數據庫時,我通常使用dbWriteTable()在我的數據庫服務器上創建一個臨時表,然後我發出一個dbSendUpdate(),它將臨時表添加到我的主表中,然後第二個dbSendUpdate()刪除臨時表。您可能會發現該模式很有用。

我碰到的唯一「疑難雜症」是我永遠無法獲得Windows域名/用戶名在連接順序中工作。我不得不建立一個單獨的SQL Server帳戶(如sa)。

0

你可能只是寫一個包含R代碼裏面的腳本,並把這個第一行:

#!/usr/bin/env Rscript 

更改文件的權限,允許執行,並把在crontab中,因爲這將是一個bash腳本。