Пароль маски от odbcDriverConnect - PullRequest
0 голосов
/ 03 июля 2019

Я хочу замаскировать свой пароль и имя пользователя из моего скрипта.Есть примеры того, как это сделать, например, здесь: https://db.rstudio.com/best-practices/managing-credentials/

Однако я не могу заставить это работать с моей настройкой скрипта.

Пытался использовать брелок, но не смог заставить его работать.

conn <- odbcDriverConnect("Driver=ODBC Driver 13 for SQL Server;
                           server=XXX,1433;
                           database=XXX;
                           uid=Needtohide;
                           pwd=Needtohide")

Этот код соединяет меня с моей БД.Я должен использовать RODBC, иначе таблицы SQL не будут возвращаться из-за упорядочения данных.Я хочу изменить свой скрипт, чтобы скрыть имя пользователя или хотя бы пароль, пожалуйста.Спасибо

Я получаю сообщение об ошибке при соединении с

conn <- odbcDriverConnect("Driver=ODBC Driver 13 for SQL Server; server=XXX,1433; database=XXX; uid=myuserID; pwd=key_get('DB', 'myuserID')")

Основная проблема со всеми решениями заключается в том, что RODBC использует STRING для соединения и как в него добавить дополнительную функцию.

1 Ответ

1 голос
/ 03 июля 2019

Вам необходимо ознакомиться с основами работы со строками.

Однако вам вообще не нужно передавать строку соединения, если вы используете соответствующую функцию соединения (но это не обеспечивает такую ​​же гибкость; привязки ODBC для DBI могут быть исправлением).Я настоятельно рекомендую вам сделать это вместо того, чтобы манипулировать строками соединения вручную, так как это намного чище.

Но просто для целей обсуждения у вас есть три варианта построения строки соединения:

  1. Использование paste0:

    conn_str = paste0(
        'Driver=ODBC Driver 13 for SQL Server; server=XXX,1433; database=XXX; ',
        'uid=myuserID; pwd=', key_get('DB', 'myuserID')
    )
    
  2. Использование sprintf:

    conn_str = sprintf(
        'Driver=ODBC Driver 13 for SQL Server; server=XXX,1433; database=XXX; uid=myuserID; pwd=%s',
        key_get('DB', 'myuserID')
    )
    
  3. Используйте glue из пакета {клей}:

    conn_str = glue('Driver=ODBC Driver 13 for SQL Server; server=XXX,1433; database=XXX; uid=myuserID; pwd={key_get("DB", "myuserID")}')
    

Во всех случаях вы затем звоните odbcDriverConnect(conn_str).

...