我正在运行一个使用 RMySQL 包连接到 MySQL数据库的R程序,一切运行良好。但现在我想通过 RSCRIPT 运行相同的程序,并希望传递连接参数,就像这样
config.xml
但它不起作用,我收到一条消息:
"错误(函数(classes,fdef,mtable):无法找到 用于签名的函数'dbConnect'的继承方法 “"字符"”"
我该怎么办?
答案 0 :(得分:3)
如错误消息所示,您尝试通过向其传递字符向量来连接到数据库。那不会起作用。
一种选择是在脚本中使用正确的语法:
library(RMySQL)
mysqlconnection <- dbConnect(RMySQL::MySQL(),
user = 'root',
password = '',
dbname = 'nepal_statgri',
host = 'localhost')
但是,你提到使用Rscript。所以我的理解是,你有兴趣拥有一个不存储连接细节的R文件,而是想要从shell终端传递这些细节作为参数。
执行此操作的一个选项是使用允许您轻松为R脚本创建命令行界面的程序包docopt
。例如,如果将以下内容保存在名为connect_mysql.R
的文件中:
'usage: connect_mysql.R [--user <user> --password <pwd> --db <database> --host <host>]
options:
--user username
--password password
--db database
--host host
' -> doc
library(docopt)
library(RMySQL)
opts <- docopt(doc)
con <- dbConnect(RMySQL::MySQL(),
username = opts$user,
password = opts$password,
dbname = opts$db,
host = opts$host)
dbListTables(con)
dbDisconnect(con)
然后您可以使用Rscript调用它并传递您的连接详细信息:
Rscript connect_mysql.R --user root --password password --db nepal_statgri --host localhost