这可能会是一个尚未得以确认的问题,因为我不是在寻找一个特定的修复:计划作业R和SQL服务器
我想在SQL Server上运行的一些数据的机器学习算法数据库。我想用R来进行计算 - 这涉及到使用R连接到数据库,处理数据并将结果表写回数据库。
这可能吗?我的猜测是肯定的。使用客户端不应该是一个问题...但是,是否有可能将它设置为一个cron作业在Linux机器上?
这可能会是一个尚未得以确认的问题,因为我不是在寻找一个特定的修复:计划作业R和SQL服务器
我想在SQL Server上运行的一些数据的机器学习算法数据库。我想用R来进行计算 - 这涉及到使用R连接到数据库,处理数据并将结果表写回数据库。
这可能吗?我的猜测是肯定的。使用客户端不应该是一个问题...但是,是否有可能将它设置为一个cron作业在Linux机器上?
对所有人都是!
您对脚本的选择是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)。
你可能只是写一个包含R代码里面的脚本,并把这个第一行:
#!/usr/bin/env Rscript
更改文件的权限,允许执行,并把在crontab中,因为这将是一个bash脚本。