【发布时间】:2011-02-17 20:52:57
【问题描述】:
背景
我有一个函数dbquery,它简化了从 R 中查询 MySQL 数据库的过程。
dbquery <- function(querystring) {
dvr <- dbDriver("MySQL")
con <- dbConnect(dvr, group = "databasename")
q <- dbSendQuery(con, querystring)
data <- fetch(q, n = -1)
return(data)
}
这样我可以发送:
dbquery(querystring = "select field_1, field_2, field_3
from table_a join table_b on this = that
join table_c on that = something
where field_4 in (1,2,3);"
但是,变量querystring 必须包含在引号内。这使得 Emacs ESS 不会像在 SQL 模式下那样很好地缩进我的查询 - 或者甚至不会像在 ESS-R 模式下没有引号时那样缩进。
问题
是否可以让 ESS 做到这一点?也许通过编写函数以便它接受不带引号的查询(并在函数中添加引号),或者可能向 .emacs 或 ess.el 添加一些内容?
【问题讨论】:
-
应该
q <- dbSendQuery(con, query)真的是q <- dbSendQuery(con, querystring)吗? -
@JD-Long 是的,感谢您指出这一点
-
您的问题是因为您有复杂的多行查询字符串吗?因为通过这个简短的例子,你给出的肯定不是问题。
-
@Spacedman 我把这个琐碎的例子改成了不那么琐碎的东西来澄清这一点