我可以在RMarkdown中的SQL块中插入系统用户名吗?
我试图在knitr SQL块中使用创建的变量。我试图使用Sys.getenv(“USERNAME”)创建变量,因为它是架构名称的一部分。我当前的代码如下所示:我可以在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
```{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