在 R 的 Excel 个单元格中执行 SQL 个查询
Executing SQL queries written in Excel Cells in R
我正在 Excel 电子表格中编写 SQL 查询,并且我已使用 ODBC 将 Rstudio 与 SQL 服务器链接起来。
现在,在 R 中使用 sqlQuery 命令,任何查询都可以 运行。
例如,
library(RODBC)
mycon <- odbcConnect("MYSQLSERVER")
a1 <- sqlQuery(mycon,paste("SELECT TOP 10 * FROM USER"]
如果在 Excel 文件的特定单元格(或不同单元格)中写入相同的查询(或多个查询),我如何获取输出?
编辑:
excel 文件将用作输入,一旦所有查询都写入 excel 文件,R 代码将为 运行。将仅向用户提供编辑 excel 文件的权限。我如何连接所有这些过程?我只需要一个开始。我找到了 XLConnect 和 readNamedRegion() 函数,但仅此而已。
使用完全相同的包 RODBC,您实际上可以 运行 SQL 查询 Excel 工作簿,甚至可以指定所需单元格的范围。
考虑连接到 Excel,将单元格中的 SQL 语句检索到数据帧中,然后循环遍历这样的 queriesdf 以作为调用传递给 SQL 服务器获取。
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)
我正在 Excel 电子表格中编写 SQL 查询,并且我已使用 ODBC 将 Rstudio 与 SQL 服务器链接起来。
现在,在 R 中使用 sqlQuery 命令,任何查询都可以 运行。 例如,
library(RODBC)
mycon <- odbcConnect("MYSQLSERVER")
a1 <- sqlQuery(mycon,paste("SELECT TOP 10 * FROM USER"]
如果在 Excel 文件的特定单元格(或不同单元格)中写入相同的查询(或多个查询),我如何获取输出?
编辑: excel 文件将用作输入,一旦所有查询都写入 excel 文件,R 代码将为 运行。将仅向用户提供编辑 excel 文件的权限。我如何连接所有这些过程?我只需要一个开始。我找到了 XLConnect 和 readNamedRegion() 函数,但仅此而已。
使用完全相同的包 RODBC,您实际上可以 运行 SQL 查询 Excel 工作簿,甚至可以指定所需单元格的范围。
考虑连接到 Excel,将单元格中的 SQL 语句检索到数据帧中,然后循环遍历这样的 queriesdf 以作为调用传递给 SQL 服务器获取。
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)