使用RODBC时返回字符(0)

Har*_*nes 7 sql-server r rodbc

我试图从SQL数据库直接导入一些数据到R.我已经建立了连接而没有问题,但提取数据有点挑战.我会尝试尽可能清楚地说明这一点,因为我认为由于某些敏感信息我无法使其重现.当我运行以下行时,我得到了我想要的数据:

myconn <- odbcConnect("COMPANYNAME", uid = "support", pwd = "password111?")
sqlQuery(myconn, "SELECT * FROM Metrics")
Run Code Online (Sandbox Code Playgroud)

但是,当我包含一个我想从服务器中提取的特定数据库时,我遇到了一个问题:

sqlQuery(myconn, "USE companyname_clientname SELECT * FROM Metrics")
Run Code Online (Sandbox Code Playgroud)

companyname_clientname是数据库.我得到的不是我想要的数据

character(0)
Run Code Online (Sandbox Code Playgroud)

我知道引入"USE companyname_clientname"是个问题,我只是不知道为什么或如何解决它.如果有任何事情可以让你更容易帮助我告诉我,我会接受.

Edd*_*die 10

如果其他人遇到此问题,character(0)也可能是SQL中警告的结果,例如

Warning: Null value is eliminated by an aggregate or other SET operation.
Run Code Online (Sandbox Code Playgroud)

这可以通过包含SET ANSI_WARNINGS OFF在SQL脚本的顶部来修复.

  • 另一个原因是`USE <DatabaseName>`语句 (2认同)

mki*_*zon 9

我有同样的问题,发现有两个原因:

  1. 像其他人指出的那样,SET NOCOUNT ON需要在查询的开头
  2. 仅这一点并没有解决返回字符(0)的问题.我发现我的SQL查询也有一个PRINT语句输出一个变量用于调试目的.删除PRINT语句然后成功返回一个输出,在我的例子中是一个临时表.

希望这有助于他人!


小智 6

我遇到过同样的问题。这character(0)似乎是由于SQL使用RODBC无法完成的循环的结果。

使我正确的解决方案是将其添加set nocount on到SQL语句的开头。如果是相同的问题,则应该解决问题。