2015-04-02 2 views
1

Использование пакета RPostgreSQL, есть ли способ подключения к удаленному экземпляру PostgreSQL, кроме жесткого кодирования учетных данных, в метод dbConnect?RPostgreSQL dbConnect с использованием строки подключения

Насколько я могу сказать, что это единственный способ сделать это:

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

Конечно, есть способ использовать строку соединения или что-то?

Редактировать: Я имею в виду ссылку на некоторый файл (отдельно от исходного кода) или переменную среды, содержащую строку подключения. Вроде как .pgpass в моем домашнем каталоге, или DATABASE_URL на heroku. Только один способ избежать наличия учетных данных БД в исходном коде.

+0

Посмотрите в документации для RPostgres - Я думаю, что документировано, что вам нужно там – hadley

+0

Спасибо @hadley. Я просмотрел эти документы http://cran.r-project.org/web/packages/RPostgreSQL/RPostgreSQL.pdf, но я не видел никаких средств для подключения, используя то, что не имеет учетных данных в исходный код. Можете ли вы указать мне на такую ​​вещь? – yalestar

+0

_RPostgres_, а не _RPostgreSQL_: https://github.com/rstats-db/RPostgres/blob/master/R/connection.R#L41-L45 – hadley

ответ

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) 
+0

Вы правы в строке жесткого соединения. Я предполагаю, что я имел в виду ссылку на некоторый файл (отдельно от исходного кода) или переменную среды, содержащую строку подключения. Похоже на '.pgpass' в моем домашнем каталоге или' DATABASE_URL' на heroku. – yalestar

+0

Я могу на самом деле пойти с чем-то вроде вашего решения: запросите пользователя для ввода. – yalestar

Смежные вопросы