не удалось запустить sql-запрос к таблице оракула в R

Я могу запустить этот запрос в sqlplus для таблицы оракула, он работает, я возвращаю результаты:

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. "Сайт"). Есть идеи, как мне обойти это?


person user1471980    schedule 21.05.2013    source источник
comment
Являются ли двойные кавычки частью имени вашей переменной? (чем вам нужно убежать от них \\")   -  person sgibb    schedule 21.05.2013
comment
Или вы можете использовать sprintf, paste, cat или любую другую функцию для интерполяции строк.   -  person hd1    schedule 21.05.2013
comment
@sgibb, я сделал это, все равно не работает: sql‹-c(SELECT * FROM KEYNOTE_PRD T WHERE T.\\Site\\='High Frequency NY Traffic')   -  person user1471980    schedule 21.05.2013
comment
Сайт действительно нужно цитировать? Я мало знаю о спецификациях Oracle SQL, но мне никогда не удавалось использовать двойные кавычки внутри запросов для Oracle из R.   -  person joran    schedule 21.05.2013
comment
@ Джоран, я пытался использовать его без двойных кавычек вокруг сайта, я получаю неверный идентификатор. Я не знаю, как с этим справиться.   -  person user1471980    schedule 21.05.2013
comment
Как насчет одинарных кавычек?   -  person joran    schedule 21.05.2013
comment
без одинарных кавычек не работает.   -  person user1471980    schedule 22.05.2013


Ответы (2)


Это поможет тому, кто не знаком с 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)
person user1471980    schedule 22.05.2013

Я просто столкнулся с такой же проблемой, когда имена столбцов были ниже, и я не мог контролировать таблицы. Решение состояло в том, чтобы избежать кавычек с помощью одного символа \. Оно работало завораживающе.

person user1471980    schedule 04.06.2013