我可以在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”)。你知道我该怎么解决这个问题吗?
发布于 2013-05-22 21:54:01
这将帮助那些不熟悉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-06-05 01:46:11
我刚刚遇到了相同类型的问题,列名较低,并且我无法控制表。解决方案是使用单个\字符对引号进行转义。它就像一个护身符一样有效。
https://stackoverflow.com/questions/16677933
复制相似问题