RPostgreSQL dbConnect使用连接字符串

时间:2015-04-02 16:50:36

标签: r rpostgresql

使用RPostgreSQL包,有没有办法连接到远程PostgreSQL实例,而不是将凭证硬编码到dbConnect方法中?

据我所知,这是唯一的方法:

dbConnect(drv, host='some.com', port='5432', dbname='some-db', user='usr', password='secrecy')

当然有一种方法可以使用连接字符串吗?

编辑:我的意思是引用一些文件(与源代码分开)或包含连接字符串的环境变量。类似于我的主目录中的.pgpass或heroku上的DATABASE_URL。只是某种方法可以避免在源代码中使用DB凭据。

1 个答案:

答案 0 :(得分:1)

至少在Windows上,在交互式会话中,您可以使用winDialogString提示用户输入名称和密码。

user <- winDialogString("Enter your username", "")
pwd <- winDialogString("Enter your password", "")
dbConnect(..., user=user, password=pwd)

但是函数调用没有连接字符串做什么?无论哪种方式,您仍然需要在某处硬编码您的凭据。


您还可以将凭据存储在某个文件中,并使用常用方法(readLinesscanread.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)