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 连接中查询不同模式的其他表,所以我不认为是这样。我试过使用和不使用 believeNRows
和 rows_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 不知道如何处理它。我以为它只会将其转换为一个字符,但它只是感到困惑。通过省略空间字段,查询工作正常。
在 Windows 上使用 R-3.5.0 和 RODBC v. 1.3-15。
我正在尝试从远程数据库查询数据。我可以很好地连接,如果我执行查询来计算行数,答案就会正确出现。但是,如果我尝试删除计数语句 select count(*)
并实际通过 select *
获取数据,我会生成一个空查询(带有一些相当奇怪的 headers)。只有两个列名正确显示,其余为问号和数字(如下所示)。我可以使用 sql 开发人员查询数据没问题。
我在下面包含了最简单的代码版本,但如果我尝试限制为仅几行或某些条件等,我会得到相同的结果。抱歉,我无法创建可重现的示例,但因为这是一个远程数据库而且我不知道问题出在哪里,我什至不确定我该怎么做。
我可以在同一个 odbc 连接中查询不同模式的其他表,所以我不认为是这样。我试过使用和不使用 believeNRows
和 rows_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 不知道如何处理它。我以为它只会将其转换为一个字符,但它只是感到困惑。通过省略空间字段,查询工作正常。