使用大表的 ETLUtils 从 R 查询 SQL 服务器
Query SQL Server from R with ETLUtils for big tables
通常从 R 查询 sql-server 数据库,我会使用:
library(RODBC)
con <- odbcConnect(dsn = "ESTUDIOS", uid = "estudios", pwd = "yyyy")
sql_trx <- "SELECT [Fecha], [IDServicio]
FROM [ESTUDIOS].[dbo].[TRX] where MONTH(Fecha) = MONTH('2016-08-01') and YEAR(Fecha) = YEAR('2016-08-01');"
trx.server <- sqlQuery(channel = con, sql_trx)
odbcClose(con)
但是当数据库table太大时,我可以使用库:ff和ETLUtils。
所以,正常的做法应该是:
library(RODBC)
library(ff)
library(ETLUtils)
sql2_trx <- read.odbc.ffdf(query = sql_trx, odbcConnect.args = list(con))
但这并没有给我想要的结果,而是返回了以下错误。
1: In RODBC::odbcDriverConnect("DSN=11") :
[RODBC] ERROR: state IM002, code 0, message [Microsoft][Administrador de controladores ODBC] No se encuentra el nombre del origen de datos y no se especificó ningún controlador predeterminado
2: In RODBC::odbcDriverConnect("DSN=11") : ODBC connection failed
你能指出使用 read.odbc.ffdf 有什么问题吗?
目前您正在将之前的 RODBC
连接对象 con
传递给 read.odbc.ffdf()
,但请记住该方法正在尝试创建 ODBC 连接并调用查询. R docs 提到 odbcConnect.args:
的正确分配
odbcConnect.args a list of arguments to pass to ODBC's odbcConnect
(like dsn, uid, pwd)
考虑像在常规 RODBC 连接中那样传递原始 DSN 和凭据:
sql2_trx <- read.odbc.ffdf(query = sql_trx, odbcConnect.args = list(dsn = "ESTUDIOS", uid = "estudios", pwd = "yyyy"))
通常从 R 查询 sql-server 数据库,我会使用:
library(RODBC)
con <- odbcConnect(dsn = "ESTUDIOS", uid = "estudios", pwd = "yyyy")
sql_trx <- "SELECT [Fecha], [IDServicio]
FROM [ESTUDIOS].[dbo].[TRX] where MONTH(Fecha) = MONTH('2016-08-01') and YEAR(Fecha) = YEAR('2016-08-01');"
trx.server <- sqlQuery(channel = con, sql_trx)
odbcClose(con)
但是当数据库table太大时,我可以使用库:ff和ETLUtils。
所以,正常的做法应该是:
library(RODBC)
library(ff)
library(ETLUtils)
sql2_trx <- read.odbc.ffdf(query = sql_trx, odbcConnect.args = list(con))
但这并没有给我想要的结果,而是返回了以下错误。
1: In RODBC::odbcDriverConnect("DSN=11") :
[RODBC] ERROR: state IM002, code 0, message [Microsoft][Administrador de controladores ODBC] No se encuentra el nombre del origen de datos y no se especificó ningún controlador predeterminado
2: In RODBC::odbcDriverConnect("DSN=11") : ODBC connection failed
你能指出使用 read.odbc.ffdf 有什么问题吗?
目前您正在将之前的 RODBC
连接对象 con
传递给 read.odbc.ffdf()
,但请记住该方法正在尝试创建 ODBC 连接并调用查询. R docs 提到 odbcConnect.args:
odbcConnect.args a list of arguments to pass to ODBC's odbcConnect (like dsn, uid, pwd)
考虑像在常规 RODBC 连接中那样传递原始 DSN 和凭据:
sql2_trx <- read.odbc.ffdf(query = sql_trx, odbcConnect.args = list(dsn = "ESTUDIOS", uid = "estudios", pwd = "yyyy"))