バックグラウンド:
データベースのクエリに 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
とを試しまし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;"
期待される出力が得られます。