无法对R中的oracle表运行sql查询

时间:2013-05-21 19:26:39

标签: r rodbc

我可以在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”)。任何想法如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

这将有助于不熟悉Oracle的人。 asnwer非常简单。 我将列名更改为大写字母,此问题已解决。这一定是个神谕。

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)

答案 1 :(得分:0)

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