在 dbConnect 的帮助下,与 SQL DB(例如 DB1 和 DB2)建立了多个连接。如何编写涉及 DB1 和 DB2 中的表的查询? dbGetQuery 是否只允许查询一个数据库?建立数据库连接后可以利用 sqldf 包吗?
这不是您正在寻找的答案,但我也遇到了同样的问题。
简而言之,我会放弃在 SQL 中的 1 个(或多个)数据库中的表之间进行任何联接/分组/子查询的想法。使用 R 中较新的大数据包,特别是 dplyr 或 data.table,实际上几乎没有必要。我能想到 SQL 更快的唯一例外是当您的查询结果大到足以占用太多 RAM 时。
对我来说一个有趣的用例如下:我来自 MPP 数据库的表大约有 20B 行。问题:查询 2M 行的整个结果集,并使用 dplyr::group_by() 对 3 个变量进行分组,或者只在 SQL 中执行 GROUP BY 返回 100k 行的最终结果。
时间方面,总是存在 R 或 SQL 更快的临界点,除了 MySQL 中的维度表连接之外,R 几乎总是在所有方面都更快。 (我的例子是我的硬件的临界点。)
dplyr 和 SQL 一样易于使用,我不确定我们是否还需要问这个问题。