从R连接本地Docker SQL Server时数据库名及列名被截断问题求助
解决RStudio中SQL Server数据库名和字符列仅显示首字母的问题
我之前碰到过类似的适配问题,结合你的环境(macOS Catalina 10.15.1 + R 3.5.0 + Docker部署SQL Server + Simba ODBC驱动),可以从这几个方向排查解决:
升级R与odbc包版本
你用的R 3.5.0是2018年的旧版本,和Catalina系统、新版ODBC驱动的兼容性可能存在问题。建议把R升级到4.x系列(比如4.2.x,适配Catalina),同时更新odbc包到最新版:install.packages("odbc")补充ODBC连接参数
试试在连接代码里添加编码和端口相关参数,可能修复字符截断的问题:con <- dbConnect(odbc(), Driver = "Simba SQL Server ODBC Driver", Server = "localhost", Port = 1433, # Docker部署SQL Server的默认端口 UID = 'SA', PWD = 'XXXXXXXX', database = dbname, TrustServerCertificate = "YES", CharacterSet = "UTF-8")排查RStudio面板缓存问题
先在R控制台用命令行验证数据是否能正常获取:# 查看完整表列表 dbListTables(con) # 查看某张表的完整字段名 dbListFields(con, "your_target_table")如果命令行输出的名称是完整的,那问题大概率是RStudio连接面板的缓存异常。这时候可以重启RStudio,点击面板的「刷新」按钮,或者删除
~/Library/Application Support/RStudio目录重置RStudio配置后再试。更换ODBC驱动
试试换成微软官方的Microsoft ODBC Driver for SQL Server for macOS——Simba驱动虽然常用,但在旧版R环境下可能存在兼容性bug,官方驱动的适配稳定性会更好。安装后把连接代码里的Driver参数改成官方驱动的名称即可。
既然Azure Data Studio能正常显示,说明SQL Server本身的配置和数据没有问题,问题集中在R/odbc/RStudio与驱动的交互层面,按上面的步骤逐一排查应该能解决。
内容的提问来源于stack exchange,提问作者Dhiraj
相关产品推荐
相关产品推荐

