Быстрее читать таблицу SQL в R

#sql #r #shiny #rodbc #rjdbc

#sql #r #блестящий #rodbc #рждбк #rjdbc

Вопрос:

Я работаю над проектом R shiny, в котором мне нужно читать таблицы SQL из моего приложения Shiny. Я пробовал использовать пакеты RODBC и RJDBC для того же и обнаружил, что RJDBC работает быстрее. Но чтение по-прежнему занимает много времени.

Ниже приведен код, который я использовал:

 LocationOfJDBC <- "/usr/lib/sqlserver_jdbc/sqljdbc_4.1/enu/jre7/sqljdbc41.jar"
options(java.parameters = "-Xmx8048m")
drv <- JDBC("com.microsoft.sqlserver.jdbc.SQLServerDriver" ,  LocationOfJDBC ,identifier.quote="`")

df<-dbGetQuery(mydb, "Select char1,char2,char3,int4,date5 from table1")
  

Этот приведенный выше запрос занимает около 90 секунд, чтобы прочитать 2,8 миллиона строк и 5 столбцов (3 символа, 1 столбец int и 1 столбец date).

Есть ли более быстрый способ чтения таблицы SQL в R??

Комментарии:

1. Я не думаю, что это хорошая идея — считывать такое количество данных shiny . Просто получите то, что вам нужно, используя возможности агрегирования SQL

Ответ №1:

Предполагая, что вы уже пробовали очевидные решения, такие как правильное индексирование, я бы посоветовал сохранить ваши большие таблицы sql в формате быстрой передачи файлов на диске. Используйте package fst, если вам нужны возможности запросов к вашим таблицам, или package feather, если нет. Существуют различные потоки, сравнивающие два пакета. Мой предпочтительный формат — fst, поскольку он позволяет выполнять запросы с диска.

 install.packages("fst")
library(fst)
?fst

  

В идеале, если вашему блестящему серверу действительно не нужны все 2,8 млн строк, я бы также предложил извлекать данные по мере необходимости.