9

我正在尝试将一些数据从 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”是问题所在,我只是不知道为什么或如何解决它。如果有任何事情可以让您更容易帮助我,请告诉我,我会提供帮助。

4

3 回答 3

11

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

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

希望这对其他人有帮助!

于 2017-03-10T22:06:14.390 回答
10

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

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

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

于 2015-07-21T20:47:30.130 回答
8

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

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

于 2013-07-18T13:52:05.900 回答