R Markdown/Quarto中SQL块执行Exasol查询失败,R块正常(只读权限)
问题解答
1. 为何R块可正常运行而SQL块出现问题?
- R块使用
exasol::dbGetQuery时,会直接执行SELECT查询并将结果集传输回R环境,不需要在Exasol服务器端创建临时表,完全适配只读权限的操作逻辑。 - Quarto/R Markdown的SQL块搭配exasol连接时,默认行为是将查询结果写入Exasol的临时表,再从临时表读取数据返回给文档。这个过程需要创建表的权限,但你的账号只有只读权限,因此触发
insufficient privileges for creating table错误。
2. 如何让SQL块正常工作?
你需要禁用exasol驱动创建临时表的默认行为,以下两种方法均可实现:
方法一:全局设置禁用临时表
在文档开头的R块中添加全局选项配置,后续所有SQL块都会生效:
options(exasol.readData.tempTable = FALSE)
方法二:建立连接时直接指定参数
在创建数据库连接时,通过参数直接禁用临时表功能,后续基于该连接的SQL块都会遵循此设置:
conn <- exasol::dbConnect( drv = "exa", exahost = "my_host_url", uid = Sys.getenv("EXASOL_USER"), pwd = Sys.getenv("EXASOL_PWD"), readData.tempTable = FALSE )
完成上述配置后,直接使用原SQL块即可正常执行:
SELECT * FROM MY_SCHEMA.MY_TABLE LIMIT 10
内容的提问来源于stack exchange,提问作者Mark Heckmann
相关产品推荐
相关产品推荐

