Sql server 使用RODBC时返回字符(0)
我试图将一些数据从SQL数据库直接导入R。我已经建立了连接,没有问题,但是提取数据有点困难。我会尽可能清楚地说明这一点,因为由于一些敏感信息,我认为我无法使其重现。当我运行以下行时,我得到了我想要的数据:Sql server 使用RODBC时返回字符(0),sql-server,r,rodbc,Sql Server,R,Rodbc,我试图将一些数据从SQL数据库直接导入R。我已经建立了连接,没有问题,但是提取数据有点困难。我会尽可能清楚地说明这一点,因为由于一些敏感信息,我认为我无法使其重现。当我运行以下行时,我得到了我想要的数据: myconn <- odbcConnect("COMPANYNAME", uid = "support", pwd = "password111?") sqlQuery(myconn, "SELECT * FROM Metrics") 其中companyname\u clientnam
myconn <- odbcConnect("COMPANYNAME", uid = "support", pwd = "password111?")
sqlQuery(myconn, "SELECT * FROM Metrics")
其中companyname\u clientname是数据库。我得到的不是我想要的数据,而是
character(0)
我知道引入“USE companyname\u clientname”是个问题,我只是不知道为什么或者如何解决它。如果有什么可以让您更容易地帮助我的话,请告诉我,我会解决的。我也有同样的问题。
字符(0)
似乎是使用SQL的循环的结果,RODBC没有完成循环
正确的解决方案是在SQL语句的开头添加
setnocounton
。如果是同一个问题,它就应该这样做。如果其他人遇到此问题,字符(0)
也可能是SQL中警告的结果,例如
Warning: Null value is eliminated by an aggregate or other SET operation.
这可以通过在SQL脚本的顶部包含
将ANSI\U警告设置为OFF
来解决。我也遇到了同样的问题,并发现有两个原因:
希望这能帮助别人 ODBC连接将只支持某种“最低公分母”SQL语法。我对sql server不是很熟悉;companyname\u clientname.Metrics的
是否等效?不幸的是,它不是等效的。你所说的“最小公分母”SQL语法是什么意思?我的意思是ODBC实际上适用于所有的SQL数据库,所以特定于某个数据库的许多语言扩展都不起作用。除了简单的旧选择、插入、更新和删除之外,我不会指望任何东西。如果任何东西都能起作用,我猜它会改变你在odbcConnect
中连接到的数据库的名称,但那只是猜测。是的,我会尝试通过odbcConnect
我实际上已经尝试过了,它在某处的另一个帖子里。不幸的是,它没有解决我的问题。另一个原因是USE
语句对我有效。谢谢。对我来说,这是存储过程中的打印语句。
Warning: Null value is eliminated by an aggregate or other SET operation.