R语言中DBI与odbc连接Snowflake数据库冗余输出的关闭方法咨询
解决Snowflake ODBC驱动在R中输出冗余日志的问题
这些刷屏的日志其实来自Snowflake的Simba ODBC驱动,和R的DBI/odbc包本身无关,所以调整R的verbose选项自然没用。下面是几种实用的解决方法:
方法1:修改ODBC数据源配置(使用DSN连接时)
- 打开Windows的「ODBC数据源管理器」(直接在开始菜单搜索即可找到)
- 在「用户DSN」或「系统DSN」标签下找到你的Snowflake数据源,点击「配置」
- 在配置窗口里找到**日志级别(Log Level)**选项,把它从
INFO改成OFF或者ERROR(仅输出错误信息) - 保存配置后重启RStudio,再测试连接和查询
方法2:在代码连接时直接指定日志参数(无DSN连接时)
如果是用代码直接构建连接字符串,在dbConnect的参数里添加LogLevel = 0(部分驱动版本可用LOG_LEVEL = 'OFF')来关闭驱动日志。示例代码:
library(DBI) library(odbc) con <- dbConnect( odbc(), Driver = "SnowflakeDSIIDriver", # 你的驱动名称,也可能是SnowflakeODBCDriver Server = "your_account.snowflakecomputing.com", Database = "your_database", Schema = "your_schema", Warehouse = "your_warehouse", Role = "your_role", UID = "your_username", PWD = "your_password", LogLevel = 0, # 关键:关闭驱动日志输出 CURLVerboseMode = FALSE # 额外关闭curl相关的冗余信息 )
方法3:修改驱动全局配置文件
如果前两种方法不生效,可以直接修改Snowflake ODBC驱动的配置文件:
- 找到驱动安装目录,通常是
C:\Program Files\Snowflake\Snowflake ODBC Driver\lib - 找到
simba.snowflake.ini文件,右键用管理员权限打开(避免保存失败) - 在
[Driver]段落中,找到LogLevel行,将其值改为0或者OFF,比如:[Driver] LogLevel=0 - 保存文件后重启RStudio,冗余日志应该就会停止输出
补充说明
你提到用RPostgres连接PostgreSQL没有这个问题,是因为Postgres使用独立的驱动,和Snowflake的Simba驱动完全无关,所以不会产生这类日志。这些信息是驱动本身的调试输出,和R的设置无关,所以调整R的verbose选项才会无效。
内容的提问来源于stack exchange,提问作者Dean MacGregor
相关产品推荐
相关产品推荐

