2016-12-15 63 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