屏蔽来自 odbcDriverConnect 的密码
Mask password from odbcDriverConnect
我想在我的脚本中隐藏我的密码和用户名。有如何做到这一点的例子,例如这里:
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 使用连接字符串,因此如何将附加功能放入其中。
您需要阅读字符串操作的基础知识。
但是,实际上根本不需要传递连接字符串,如果使用 appropriate connection function (but this doesn’t provide quite the same kind of flexibility; 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)
。
我想在我的脚本中隐藏我的密码和用户名。有如何做到这一点的例子,例如这里: 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 使用连接字符串,因此如何将附加功能放入其中。
您需要阅读字符串操作的基础知识。
但是,实际上根本不需要传递连接字符串,如果使用 appropriate connection function (but this doesn’t provide quite the same kind of flexibility; 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)
。