0

我可以在 sqlplus 中针对 oracle 表运行此查询,它可以工作我得到结果:

SELECT * FROM KEYNOTE_PRD WHERE KEYNOTE_PRD."Site"='High Frequency NY Traffic'

但我尝试在 R 中使用以下代码:

tryCatch({
  ch=odbcConnect("<id>",pwd = "<passwd>")
  sql<-c("SELECT * FROM KEYNOTE_PRD WHERE KEYNOTE_PRD."Site"='High Frequency NY Traffic'")
  res<-sqlQuery(ch, sql)

},error = function(e) {
  print(odbcGetErrMsg(ch))

  print("retrive or connect to the db")
})
odbcClose(ch)

这没用。我认为它不喜欢双引号内的双引号(KEYNOTE_PRD."Site")。任何想法我将如何解决这个问题?

4

2 回答 2

0

这将对不熟悉 Oracle 的人有所帮助。答案很简单。我将列名更改为大写字母,这个问题就解决了。这一定是神谕。

tryCatch({
  ch=odbcConnect("<id>",pwd = "<passwd>")
  sql<-c("SELECT * FROM KEYNOTE_PRD WHERE KEYNOTE_PRD.SITE='High Frequency NY Traffic'")
  res<-sqlQuery(ch, sql)

},error = function(e) {
  print(odbcGetErrMsg(ch))

  print("retrive or connect to the db")
})
odbcClose(ch)
于 2013-05-22T13:54:01.120 回答
0

我刚刚遇到了列名较低且无法控制表的相同类型的问题。解决方案是用单个 \ 字符转义引号。它就像一个魅力。

于 2013-06-04T17:46:10.587 回答