【发布时间】:2021-02-04 23:05:15
【问题描述】:
背景:我正在远程工作以制作 R-shiny 仪表板。我已获得 SQL Server 数据库的权限。我对 SQL Server 没有任何实际经验。我在自己的机器上安装了 MySQL,但我正在登录一个具有 R-studio 并可以访问数据库的虚拟机。
我的连接似乎很好
con <- dbConnect(odbc::odbc(), Driver = "ODBC Driver 17 for SQL Server", Server = DBServer, Database = "thedb", UID = DBUser, PWD = DBPassword)
我可以运行这个查询并得到正确的结果:
mydates <- dbGetQuery(con, paste0("SELECT var1, datevar FROM table1 WHERE datevar IS NOT NULL"))
但是当我运行这个查询时:
mynames <- dbGetQuery(con, paste0("SELECT names FROM table2"))
结果是:
1 #NAME?
2 #NAME?
3 #NAME?
4 #NAME?
5 #NAME?
6 #NAME?
我与数据仓库人员核实,数据库中有真实姓名 - 没有任何东西看起来像 #NAME?。
另外,我确实拥有两个表的权限。
谁能建议如何解决这个问题?
更新:
SELECT * FROM table2
工作正常
SELECT rowID, names FROM table2
但如果我只尝试提取名称,它仍然不起作用
【问题讨论】:
-
可能是编码问题;我没有足够的经验来多说。您是否期望数据中有不同的语言?
-
我有一个更新:如果我改为查询:mynames
-
ODBC Driver 17 for SQL Server, windows 10
-
我不确定是否可以在这里问这个问题 - 如果不是,请告诉我,我会移动这个问题,但你在这篇文章 stackoverflow.com/questions/61799476/… 中评论说“DBI 包,如已编写,不支持绑定变长向量"
-
你的意思是我不应该查询可变长度的列表 - 例如我做了一个查询,它给了我一个列表(可变长度),然后我使用列表中的粘贴到 WHERE 子句部分 - 即 sqlq2
标签: r sql-server odbc dbi