使用RODBC时返回字符(0)

时间:2013-07-17 15:43:13

标签: sql-server r rodbc

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

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

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

sqlQuery(myconn, "USE companyname_clientname SELECT * FROM Metrics")

其中companyname_clientname是数据库。而不是我想要的数据,我得到了

character(0)

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

3 个答案:

答案 0 :(得分:10)

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

Warning: Null value is eliminated by an aggregate or other SET operation.

可以通过在SQL脚本的顶部包含SET ANSI_WARNINGS OFF来解决此问题。

答案 1 :(得分:8)

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

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

答案 2 :(得分:5)

我有同样的问题。 character(0)似乎是由于RODBC没有完成的SQL使用循环的结果。

使我正确的解决方案是将set nocount on添加到SQL语句的开头。如果它是同一个问题,它应该可以解决问题。