Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 使用R和SQL Server的Cron作业_Sql Server_R_Cron - Fatal编程技术网

Sql server 使用R和SQL Server的Cron作业

Sql server 使用R和SQL Server的Cron作业,sql-server,r,cron,Sql Server,R,Cron,这可能是一个未明确说明的问题,因为我不是在寻找具体的解决方案: 我想在SQLServer数据库中的一些数据上运行一个机器学习算法。我想使用R来进行计算——这将涉及使用R连接到数据库,处理数据,并将结果表写回数据库 这可能吗?我猜是的。使用客户端应该不会有问题 但是,是否可以在linux机器上将其设置为cron作业 您可以编写一个包含R代码的脚本,并将其放在第一行: #!/usr/bin/env Rscript 更改文件权限以允许执行,并将其放入crontab,因为它将是bash脚本。所有人都同

这可能是一个未明确说明的问题,因为我不是在寻找具体的解决方案:

我想在SQLServer数据库中的一些数据上运行一个机器学习算法。我想使用R来进行计算——这将涉及使用R连接到数据库,处理数据,并将结果表写回数据库

这可能吗?我猜是的。使用客户端应该不会有问题


但是,是否可以在linux机器上将其设置为cron作业

您可以编写一个包含R代码的脚本,并将其放在第一行:

#!/usr/bin/env Rscript
更改文件权限以允许执行,并将其放入crontab,因为它将是bash脚本。

所有人都同意

如前所述,您可以选择Rscript或littler编写脚本

在努力从Linux连接到MSSQL数据库之后,我的建议是使用数据库连接到MSSQL。我使用RODBC从Windows进行连接,但在Linux中始终无法使其正常工作。要使RJDBC工作,您需要在Linux机器上正确安装Java,并且可能需要更改一些环境变量(似乎我总是有一些错误配置rJava的东西)。您还需要下载并安装可获得的Linux JDBC驱动程序

一旦安装了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()
在数据库服务器上创建一个临时表,然后发出
dbSendUpdate()
将临时表附加到主表,然后发出第二个
dbSendUpdate()
删除临时表。您可能会发现该模式很有用

我遇到的唯一一个“问题”是,我永远无法在连接序列中使用Windows域/用户名。我必须设置一个单独的SQL Server帐户(如sa)

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