2016-03-14 3 views
1

Я пытаюсь сделать простой запрос базы данных DB2, используя пакет RODBC в R (myQuery < -sqlQuery (channel, paste0 ("..."))) Один столбцов - это Varchar длиной 3000. Результирующий кадр данных показывает «NA» в этом столбце, когда должен быть текст. Экспорт его в csv также показывает только «NA». Запрос в Access показывает кодировку с нечетным символом (только после нажатия на ячейку). Существует ли максимальная длина значения в кадре данных R или максимальная длина поля, которое можно вытащить с помощью RODBC? Или это кодирование поля, которое вызывает появление «NA»?Максимальная длина значения в кадре данных R, RODBC

ответ

1

Я выполнил окончательный тест по DB2 (LUW 9.7) и R (3.2.2 Windows), и он отлично работал для меня.

SQL код:

create table test (foo varchar(3000)); 

--actual insert is 3000 chars 
insert into test values ('aaaaaa .... a'); 

--this select worked fine in my normal SQL client 
select * from test 

R Код:

long = sqlQuery(connection, "select * from test"); 

#Displays the 3000 character value. 
long; 

Я думаю, проблема в том, по какой-то другой причине, чем просто размер поля:

  • Проблемы с кодировкой символов. Если вы видите что-то смешное в Access, возможно, содержимое поля является чем-то неприемлемым в кодировке символов, которую использует R, поэтому он отбрасывается. (Я не знаком с кодировкой символов в R, в частности, но в целом это сложная проблема для разработки программного обеспечения).
  • Общий размер результатов. Возможно, проблема связана с общей длиной строки, а не с длиной одного поля. Запрос также возвращает много других вещей? Вы пробовали простой тест именно этой области?
  • Проблема в другой версии. Возможно, вы используете другую версию, чем я, и действительно есть проблема с вашей версией. Если вы так думаете, уточните свой вопрос с дополнительной информацией.
+0

Спасибо Dan. Я использую 3.2.1 для Windows, поэтому я не думаю, что это проблема. Простое возвращение поля также приводит к NA. Я думаю, вы правы в том, что это кодировка символов. Я найду еще один способ получить данные. – Nolan