使用RPostgreSQL包,有没有办法连接到远程PostgreSQL实例,而不是将凭证硬编码到dbConnect
方法中?
据我所知,这是唯一的方法:
dbConnect(drv, host='some.com', port='5432', dbname='some-db', user='usr', password='secrecy')
当然有一种方法可以使用连接字符串吗?
编辑:我的意思是引用一些文件(与源代码分开)或包含连接字符串的环境变量。类似于我的主目录中的.pgpass
或heroku上的DATABASE_URL
。只是某种方法可以避免在源代码中使用DB凭据。
答案 0 :(得分:1)
至少在Windows上,在交互式会话中,您可以使用winDialogString
提示用户输入名称和密码。
user <- winDialogString("Enter your username", "")
pwd <- winDialogString("Enter your password", "")
dbConnect(..., user=user, password=pwd)
但是函数调用没有连接字符串做什么?无论哪种方式,您仍然需要在某处硬编码您的凭据。
您还可以将凭据存储在某个文件中,并使用常用方法(readLines
,scan
,read.table
等)进行阅读。
### assuming dbcreds.txt contains the single line "username password"
cred <- strsplit(readLines("dbcreds.txt"), "[[:blank:]]+")[[1]]
user <- cred[1]
pwd <- cred[2]
dbConnect(..., user=user, pass=pwd)