我可以在RMarkdown中的SQL块中插入系统用户名吗?

我可以在RMarkdown中的SQL块中插入系统用户名吗?,r,dplyr,r-markdown,knitr,dbplyr,R,Dplyr,R Markdown,Knitr,Dbplyr,我试图在knitr SQL块中使用创建的变量。我试图使用Sys.getenv(“USERNAME”)创建变量,因为它是架构名称的一部分。我当前的代码如下所示: ```{r} library(tidyverse) library(lubridate) library(dbplyr) library(DBI) con <- DBI::dbConnect(odbc::odbc(), .connection_string = 'driver={SQL Server}; server=s

我试图在knitr SQL块中使用创建的变量。我试图使用Sys.getenv(“USERNAME”)创建变量,因为它是架构名称的一部分。我当前的代码如下所示:

```{r}
library(tidyverse)
library(lubridate)
library(dbplyr)
library(DBI)

con <-
DBI::dbConnect(odbc::odbc(), 
  .connection_string = 'driver={SQL Server};
  server=server;
  database=db1;
  trusted_connection=true')

BEGINMONTH <- "01JUN16"
ENDMONTH <- "01JUL16"
```

```{SQL, connection=con}
DROP TABLE [SANDBOX_DB].[ORG\USERNAME].TEMP

SELECT VAR1, VAR2, VAR3
  INTO [SANDBOX_DB].[ORG\USERNAME].TEMP
  FROM [DB1].TABLE
  WHERE DATE BETWEEN ?BEGINMONTH AND ?ENDMONTH
```
schema <- paste0("[SANDBOX_DB].[ORG\\", Sys.getenv("USERNAME"), "]")
```{r}
library(tidyverse)
library(lubridate)
library(dbplyr)
library(DBI)

con <-
DBI::dbConnect(odbc::odbc(), 
  .connection_string = 'driver={SQL Server};
  server=server;
  database=db1;
  trusted_connection=true')

BEGINMONTH <- "01JUN16"
ENDMONTH <- "01JUL16"
schema <- paste0("[SANDBOX_DB].[ORG\\", Sys.getenv("USERNAME"), "]")
```

```{SQL, connection=con}
DROP TABLE ?schema.TEMP

SELECT VAR1, VAR2, VAR3
  INTO ?schema.TEMP
  FROM [DB1].TABLE
  WHERE DATE BETWEEN ?BEGINMONTH AND ?ENDMONTH
```
`{r}
图书馆(tidyverse)
图书馆(lubridate)
图书馆(dbplyr)
图书馆(DBI)

con我不知道SQL Server的SQL方言,但如果问题是
.TEMP
不在单引号内,也许可以把它放在
paste0()
调用中?我知道我可以在其他dbs中使用类似的构造。如果不起作用,请告诉我,因为编写
mssql
块类型来解决此问题不会太难。我尝试过此方法,但仍然遇到相同的错误。编写
mssql
chunk类型到底是什么意思?这就是SQL chunk背后的“魔力”:;您的一个解决方法是创建一个新的
eng_mssql()
engine&chunk类型“mssql”,它可以处理独特的(&shoddy)MS SQL Server语法SQL漏洞,就像您遇到的一样。扩展
knitr
引擎并不困难。面对面,我会调查这件事。非常感谢。
Error: <SQL> 'DROP TABLE '[SANDBOX_DB].[ORG\USERNAME]'.TEMP 

SELECT DISTINCT VAR1, VAR2, VAR3
    INTO '[SANDBOX_DB].[ORG\USERNAME]'.TEMP
    FROM [DB1].TABLE
    WHERE DATE BETWEEN '01JUN16' AND '01JUL16'
'
  [Microsoft][ODBC SQL Server Driver][SQL 
Server]Incorrect syntax near '[SANDBOX_DB].[ORG\USERNAME]'. 
Failed to execute SQL chunk