我想从脚本中屏蔽密码和用户名。举例说明如何执行此操作这里: 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,因此如何在其中添加附加功能。
答案 0 :(得分:1)
您需要阅读有关字符串操作的基础知识。
但是,如果您使用appropriate connection function,则实际上根本不需要传递连接字符串(但这并不能提供完全相同的灵活性; ODBC bindings for DBI可能是一种补救)。我强烈建议您这样做,而不是手动操作连接字符串,因为它更清洁。
但是出于讨论的目的,您实质上有三种选择来构造连接字符串:
使用paste0
:
conn_str = paste0(
'Driver=ODBC Driver 13 for SQL Server; server=XXX,1433; database=XXX; ',
'uid=myuserID; pwd=', key_get('DB', 'myuserID')
)
使用sprintf
:
conn_str = sprintf(
'Driver=ODBC Driver 13 for SQL Server; server=XXX,1433; database=XXX; uid=myuserID; pwd=%s',
key_get('DB', 'myuserID')
)
使用软件包{glue}中的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)
。