RODBC 提供正确的行数但产生空查询

RODBC gives proper row count but yields empty query

在 Windows 上使用 R-3.5.0 和 RODBC v. 1.3-15。 我正在尝试从远程数据库查询数据。我可以很好地连接,如果我执行查询来计算行数,答案就会正确出现。但是,如果我尝试删除计数语句 select count(*) 并实际通过 select * 获取数据,我会生成一个空查询(带有一些相当奇怪的 headers)。只有两个列名正确显示,其余为问号和数字(如下所示)。我可以使用 sql 开发人员查询数据没问题。

我在下面包含了最简单的代码版本,但如果我尝试限制为仅几行或某些条件等,我会得到相同的结果。抱歉,我无法创建可重现的示例,但因为这是一个远程数据库而且我不知道问题出在哪里,我什至不确定我该怎么做。

我可以在同一个 odbc 连接中查询不同模式的其他表,所以我不认为是这样。我试过使用和不使用 believeNRowsrows_at_time.

感谢您的任何想法。

channel <- odbcConnect("mydb", uid="myuser", pwd="mypass", believeNRows=FALSE,rows_at_time = 1)

myquery <- paste("select count(*) from MYSCHEMA.MYTABLE")

sqlQuery(channel, myquery)
COUNT(*)
1 149712361

myquery <- paste("select * from MYSCHEMA.MYTABLE")
sqlQuery(channel, myquery)
[1] ID        FMC_IN_ID ?         ?.1       ?.2       ?.3       ?.4       ?.5       ?.6       ?.7       ?.8       ?.9       ?.10      ?.11      ?.12      ?.13      ?.14      ?.15     
<0 rows> (or 0-length row.names)

我会尝试以下方法:

  • 在您的查询中添加一个简单的 limit 100 以查看是否可以返回 一些 数据
  • believeNRows 选项添加到 sqlQuery 调用中——根据我的经验,该级别需要它

为了帮助其他人,问题是数据库包含一个 Oracle 空间字段 (MDSYS.SDO_GEOMETRY)。 R 不知道如何处理它。我以为它只会将其转换为一个字符,但它只是感到困惑。通过省略空间字段,查询工作正常。