【问题标题】:How to escape characters in SQL code in an R Markdown chunk?如何在 R Markdown 块中转义 SQL 代码中的字符?
【发布时间】:2020-01-27 16:58:44
【问题描述】:
```
{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(tidyverse)
library(odbc)
library(DBI)
library(dbplyr)
```

```{sql, connection=con, output.var="df"}
SELECT DB_Fruit.Pear, Store.Name, Cal.Year, Sales.Qty FROM DB_Fruit
```
#> Error: unexpected symbol in "SELECT DB_Fruit.Pear"

我正在尝试在 R Markdown 块中运行 SQL 代码,如上所示。我收到上面显示的“意外符号”错误。我最好的猜测是,我需要使用诸如 \_\\_ 之类的东西来转义下划线,但这些都不会让我的错误消失。

如果我改为使用 DBI 进行查询(如下所示),我不会收到任何错误:

df <- dbGetQuery(con,'
  SELECT DB_Fruit.Pear, Store.Name, Cal.Year, Sales.Qty 
  FROM DB_Fruit
')

也许dbGetQuery 函数能够正确解释诸如下划线_ 之类的东西,而常规的R Markdown 解析器却不能?或者也许有一些空格被复制/粘贴为一些奇怪的 unicode 字符,dbGetQuery 函数能够解释而常规 R Markdown 解析器不能解释?

可能的罪魁祸首是什么?我该怎么办?

【问题讨论】:

  • 你解决了吗?
  • @Ian.T 从来没有解决过这个问题,如果您想出解决方案,请发布。

标签: sql r r-markdown dbi dbplyr


【解决方案1】:

你的块头可能应该是

{SQL, connection=con, output.var="df"}

而不是

{r SQL, connection=con, output.var="df"}

【讨论】:

  • 抱歉,但标记为已解决太快,将块头更正为 {sql, connection=con, output.var="df"} 并立即注意到语法突出显示重新打开,表明这是解决方案的第 1 部分。但唉,即使有了这个更正,我仍然得到同样的错误。还有什么我需要做的吗?
  • 您的 SQL 似乎引用了名为(或别名为)“Store”、“Cal”和“Sales”的表,但这些表并未出现在 FROM 子句中。所以也许你的 SQL 需要更正。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-07
  • 2012-07-03
  • 1970-01-01
  • 1970-01-01
  • 2014-07-28
  • 1970-01-01
相关资源
最近更新 更多