Почему выступление не работает в SQLQUERY в RODBC?

StackOverflow https://stackoverflow.com/questions/3622042

  •  26-09-2019
  •  | 
  •  

Вопрос

Мы сохраняем все наши лабораторные данные в базе данных Sybase. Когда я хочу делать манипулирование и анализ данных, я прочитал данные в R с RODBC.

library(RODBC)
channellab <- odbcConnect("Labdata")
indivs <-sqlQuery(channellab,'SELECT * from CGS.Specimen')

Пока так хорошо, за исключением того, что CGS.specimen - это таблица для наших лабораторных властей. Есть почти 40000 образцов (строк) с 66 переменными. Требуется ненужное количество времени для чтения, особенно когда я заинтересован только в ходе одного исследования, который имеет около 1000 образцов. Очевидный способ исправить это будет

indivs <-sqlQuery(channellab,'SELECT * from CGS.Specimen WHERE StudyCode="RP"')  

Но когда я бегу, что я получаю

1] «42S22 -143 [SYBASE] [Драйвер ODBC] [Adaptive Server в любом месте] Столбец не найден: столбец« RP »не найден« »« [RODBC] ошибка: не удалось SQLEXECDirect 'Select * from CGS.specimen, где CUSTIMECODE = "RP " '' "

Я играл с кавычками, и я играл с побегами, но увы я никуда не получил.

например

indivs <-sqlQuery(channellab,'SELECT * from CGS.Specimen WHERE StudyCode= 'RP'  ')

Ошибка: Неожиданный символ в «Indivs <-SQLQuery (Channellab», выберите * от CGS.SPECIMEN, где CUSCODECODE = 'RP "

indivs <-sqlQuery(channellab,"SELECT * from CGS.Specimen WHERE StudyCode= 'RP'  ")

Ошибка в .call (c_rodbcfetchRows, attr (канал, "handle_ptr"), max, puffsize,: отрицательные векторы не допускаются

Что ты посоветуешь?

Это было полезно?

Решение

Последняя ошибка, которую вы сообщаете, из функции .Call к функции C RODBCFetchRows. Таким образом, ваша проблема с кавычками, кажется, решается. Однако с указанной ошибкой у вас все еще есть проблема. Возможно, строки неправильно сообщаются (функция C пытается выделить векторы на основе этого значения, но не проверяет отрицательные значения). Пытаться:

indivs <-sqlQuery(channellab,"SELECT * from CGS.Specimen WHERE StudyCode= 'RP'", believeNRows = FALSE)

Другие советы

Отредактировано:

indivs <-sqlQuery(channellab,'SELECT * from CGS.Specimen WHERE StudyCode=\'RP\'')  

Хорошо, вы можете запустить другой запрос, где возвращаются некоторые данные?

WHERE StudyCode=StudyCode Например? Дает ли это ту же ошибку о -ве длиной?

Это означает, что вышеупомянутое является правильным для избежания учебного кода. -Воль длится еще одна ошибка. Можете ли вы вернуть не все столбцы с * но определенными столбцами, где нет нулей?

Попробуйте вариант Believenrows = false. Это работало для меня по аналогичной ошибке (ошибка отрицательной длины).

Этот вопрос был больше до такой степени:Запрос Oracle DB от Revolution R Использование RODBC

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top