2010-07-21 106 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脚本。