这可能是一个未说明的问题,因为我不是在寻找具体的修复:
我想对SQL Server数据库中的某些数据运行机器学习算法.我想使用R来进行计算 - 这将涉及使用R连接到数据库,处理数据,并将结果表写回数据库.
这可能吗?我的猜测是肯定的.使用客户端应该不是问题...
但是,将它作为一个cron工作设置在Linux机器上是否可行?
全部同意!
您在脚本编写方面的选择是Rscript或者更小的,如上一篇文章所述.
我一直在努力从Linux连接到MSSQL数据库,我建议使用RJDBC连接到MSSQL的数据库.我使用RODBC从Windows连接,但我无法在Linux中正常工作.要使RJDBC正常工作,您需要在Linux机器上正确安装Java,并且可能需要更改一些环境变量(似乎我总是使用rJava错误配置SOMETHING).您还需要下载并安装Linux的JDBC驱动程序,您可以直接从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).