哪些操作可以 SQL 执行包装 SQL 操作不能执行的 R 包?

What operations can SQL perform that R packages which wrap SQL operations can’t?

例如,如果我看到一个 PostgreSQL 数据库,我通过使用 RPostgreSQL 与其交互而不是执行 SQL 操作而错过了什么使用命令行或数据库管理应用程序?是否有些事情只能用 SQL 来完成?

先发制人地解决我在这个问题的前几次迭代中看到的一个常见反应 (example):我知道 R 和 SQL 是用于不同目的的不同工具。

在将 RPostgreSQL 和 RPostgres 等 R 软件包与 SQL 命令行或数据库管理应用程序进行比较时,您完全没有限制自己。 R 包可以提供与其他工具相同的类似命令行的界面,例如通过 DBI 启用 dbExecute(),您可以发出任何需要的语句。差异可能出现在更高级别的包装函数中,这些函数可能在 R 和 SQL 之间的接口上存在问题。此类问题可能看起来像 class/data 类型解释(例如,我相信 R 包不知道如何解析 postgresql 数组数据类型作为特定示例)。这可能会影响 upsert 类型命令,例如,或将完整 data.frames 附加到数据库表的调用,因为当更高级别的函数尝试错误地自动映射这些数据类型时,数据类型可能不匹配;类似的问题也可能存在于必须将 NA 映射到 NULL 或显式转换数据类型时。编写临时表和这种性质的东西也可能存在问题。我将这些更多地视为怪癖或烦恼,因为存在允许相同级别功能的变通方法。比如使用底层函数调用,需要更全面地写出SQL;或者通过额外的工作来映射将在本机 SQL 和 R 环境之间转换的数据类型。 (我在其他地方回答了另一个 SO 问题,并举例说明了在 R 和数据库之间使用中间表的变通方法:)。从事务级命令转向更全面的 DBA 需求,如管理用户、权限、底层配置等,也可能会发现一些限制。我还会注意到,虽然 dplyr 包可能非常流行,但它提供了非常高级的便利功能来与 SQL 进行交互,它比直接编写语句和使用较低级别的包调用更有可能施加限制。 dplyr 使用 R 函数调用自动构建 SQL 语句,但尝试做任何超出相对简单 select/insert/update/join 样式调用的事情可能需要相当多的努力才能使所谓的快捷方式执行预期。