【问题标题】:Cron Job with R and SQL Server使用 R 和 SQL Server 的 Cron 作业
【发布时间】:2010-07-21 20:56:32
【问题描述】:

这可能是一个未充分说明的问题,因为我不是在寻找特定的解决方法:

我想对 SQL Server 数据库中的一些数据运行机器学习算法。我想使用 R 进行计算——这将涉及使用 R 连接到数据库、处理数据并将结果表写回数据库。

这可能吗?我的猜测是肯定的。使用客户端应该不是问题...

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

【问题讨论】:

    标签: sql-server r cron


    【解决方案1】:

    大家都同意!

    如in this previous post 所述,您可以选择 Rscript 或更小的脚本。

    由于难以从 Linux 连接到 MSSQL 数据库,我的建议是使用 RJDBC 来连接到 MSSQL 的数据库。我使用 RODBC 从 Windows 连接,但我无法让它在 Linux 中正常工作。要使 RJDBC 正常工作,您需要在 Linux 机器上正确安装 Java,并且可能需要更改一些环境变量(似乎我总是用 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)。

    【讨论】:

      【解决方案2】:

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

      #!/usr/bin/env Rscript
      

      更改文件权限以允许执行并放入 crontab 中,因为它是一个 bash 脚本。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-30
        • 1970-01-01
        • 1970-01-01
        • 2020-01-24
        • 1970-01-01
        相关资源
        最近更新 更多