Задание Cron с R и SQL Server - PullRequest
       3

Задание Cron с R и SQL Server

3 голосов
/ 22 июля 2010

Вероятно, это будет недостаточно конкретный вопрос, так как я не ищу конкретного исправления:

Я хочу запустить алгоритм машинного обучения для некоторых данных в базе данных SQL Server. Я хотел бы использовать R для выполнения расчетов - что предполагает использование R для подключения к базе данных, обработки данных и записи таблицы результатов обратно в базу данных.

Возможно ли это? Я думаю, да. Не должно быть проблем с использованием клиента ...

однако, возможно ли установить это на linux box как работу cron?

Ответы [ 2 ]

5 голосов
/ 22 июля 2010

Да всем!

Ваш выбор сценариев - Rscript или немного, как обсуждалось в этом предыдущем посте .

После борьбы с подключением к базам данных MSSQL из Linux я рекомендую использовать RJDBC для подключения баз данных к MSSQL. Я использовал RODBC для подключения из Windows, но мне так и не удалось заставить его работать должным образом в Linux. Чтобы заставить работать RJDBC, вам нужно будет правильно установить Java на вашем Linux-компьютере и, возможно, потребуется изменить некоторые переменные окружения (кажется, что у меня SOMETHING всегда неправильно настроен с помощью rJava). Вам также нужно будет загрузить и установить драйверы JDBC для Linux, которые вы можете получить непосредственно от 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 голосов
/ 22 июля 2010

Вы можете просто написать скрипт, содержащий код R, и поместить его в первую строку:

#!/usr/bin/env Rscript

измените права доступа к файлу, чтобы разрешить выполнение, и поместите в crontab, как если бы это был скрипт bash.

...