在 R 中更快地读取 SQL 表
Posted
技术标签:
【中文标题】在 R 中更快地读取 SQL 表【英文标题】:Read SQL table faster in R 【发布时间】:2019-04-08 12:58:44 【问题描述】:我正在做一个 R Shiny 项目,我需要从我的 Shiny 应用程序中读取 SQL 表。我尝试过使用 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 秒来读取 280 万行和 5 列(3 个字符、1 个整数和 1 个日期列)。
有没有更快的方法在 R 中读取 SQL 表??
【问题讨论】:
我认为将这么多数据读入shiny
并不是一个好主意。使用 SQL 的聚合功能获取您需要的东西
【参考方案1】:
假设您已经尝试过诸如正确索引之类的明显解决方案,我建议您将大型 sql 表保存为磁盘上的快速文件传输格式。如果您需要查询表的功能,请使用包 fst,如果不需要,请使用包羽化。有各种线程比较这两个包。我的首选格式是 fst,因为它允许从磁盘进行查询。
install.packages("fst")
library(fst)
?fst
理想情况下,除非您的闪亮服务器确实需要所有 280 万行,否则我会进一步建议根据需要提取数据。
【讨论】:
以上是关于在 R 中更快地读取 SQL 表的主要内容,如果未能解决你的问题,请参考以下文章