2016-12-15 65 views
0

我正在Excel电子表格中编写SQL查询,并且使用ODBC将Rstudio与SQL服务器相关联。执行用Excel编写的SQL查询R中的单元格

现在,使用R中的sqlQuery命令,可以运行任何查询。 例如,

library(RODBC) 
mycon <- odbcConnect("MYSQLSERVER") 
a1 <- sqlQuery(mycon,paste("SELECT TOP 10 * FROM USER"] 

如果相同的查询(或数量的查询),写在一个Excel文件中的特定细胞(或不同的细胞),我怎么能得到的输出?

编辑Excel文件将被用作输入,并且一旦所有查询都写在Excel文件时,R代码将被运行。用户将只提供编辑excel文件。我如何连接所有这些过程?我只需要一个开始。我找到了XLConnect和readNamedRegion()函数,但这是它的范围。

回答

1

使用相同的确切程序包RODBC,您可以实际在Excel工作簿上运行SQL查询,甚至可以指定所需单元格的范围。

考虑连接到Excel,将单元格中的SQL语句检索到一个数据框中,然后遍历这些查询文件以便将调用传递给SQL Server提取。

library(RODBC) 

# EXCEL CONNECTION ----------------------------- 
xlconn <- odbcDriverConnect('Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)}; 
          DBQ=C:\\Path\\To\\ExcelWorkbook.xlsx') 
# WHOLE WORKSHEET (FIRST ROW AS HEADERS) 
queriesdf <- sqlQuery(xlconn, "SELECT * FROM [Sheet1$]") 
# SPECIFIC RANGE (FIRST ROW AS HEADERS) 
queriesdf <- sqlQuery(xlconn, "SELECT * FROM [Sheet1$A1:Z100]") 
close(xlconn) 

# SQL SERVER CONNECTION ------------------------ 
mssqlconn <- odbcConnect("MYSQLSERVER")  
# LIST OF DATA FRAMES 
dfList <- lapply(queriesdf$QueryCol, function(q) sqlQuery(mssqlconn, q)) 
close(mssqlconn) 
+0

谢谢一堆:) –

+0

这个答案帮助你吗?任何问题?如果它有帮助,请接受它(勾选标记到旁边)以确认解决方案。 – Parfait