背景:
我正在使用 RMySQL 来查询数据库;我已经用带引号的字符串成功地做到了这一点,但我现在想从 .sql 文件发送更长的查询。
sql文件在mypackage/inst/extdata/myquery.sql
问题:
myquery.sql
从数据库导入查询并将其提交到数据库的最佳方式是什么?
我试过的:
这是我正在处理的功能:
library(RMySQL)
library(mypackage)
myqueryfun <- function(...){
file <- system.file("extdata", "myquery.sql", package = "mypackage")
query <- SOMEFUN(file)
con <- dbConnect(...)
q <- dbSendQuery(con, query)
result <- fetch(q, n = -1)
return(result)
}
所以,我正在寻找函数SOMEFUN
及其附加参数。我已经尝试过scan
and readLines
,并且我尝试过对这些函数使用不同的参数,例如scan(file, sep = '\n', what = 'character')
我得到的最接近的是writeLines(readLines(file))
,但是我得到了一些与解析文件相关的错误,例如对以下内容的响应writeLines(readLines())
:
Error in function (classes, fdef, mtable) :
unable to find an inherited method for function "dbSendQuery", for signature "MySQLConnection", "NULL"
Called from: stop("unable to find an inherited method for function \"", fdef@generic,
"\", for signature ", cnames)
如果查询是长度为 1 的字符向量,例如"show tables;"
,我会得到预期的输出。