Строка RODBC усекается

Я получаю данные с MySql Server в R с помощью RODBC.
Итак, в одном столбце базы данных находится вектор символов

SELECT MAX(CHAR_LENGTH(column)) FROM reqtable;

ВОЗВРАТ 26566

Сейчас я покажу вам на примере, как я столкнулся с проблемой.

`library(RODBC)
 con <- odbcConnect("mysqlcon")
 rslts <- as.numeric(sqlQuery(con,
                          "SELECT CHAR_LENGTH(column) FROM reqtable LIMIT 10",
                          as.is=TRUE)[,1])

`возвращается

> rslts
 [1]  62  31  17 103  30 741  28  73  25 357

где как rslts <- nchar(as.character(sqlQuery(con, "SELECT column FROM reqtable LIMIT 10", as.is=TRUE)[,1])) возвращается

> rslts
 [1]  62  31  17 103  30 255  28  73  25 255

Таким образом, строки с длиной> 255 обрезаются до 255. Есть ли способ получить полную строку.

Спасибо


person sayan dasgupta    schedule 07.01.2011    source источник
comment
Этот вопрос решил для меня проблему: stackoverflow.com/questions/22366195/   -  person bart    schedule 03.06.2016


Ответы (3)


В драйвере PostgreSQL ODBC есть переменная MaxLongVarcharSize, для которой по умолчанию установлено значение 8190 (я использовал ее как в Windows, так и в Ubuntu). Возможно, что драйвер MySQL ODBC имеет аналогичную переменную, установленную на 255.

person MiG62    schedule 15.06.2011
comment
Эй, есть идеи, как это проверить и отредактировать? Я думаю, это аналогичная проблема - person sayan dasgupta; 08.09.2011
comment
В Windows вы выбираете источник данных (в Панели управления | Администрирование | Источники ODBC) и нажимаете кнопку «Настроить», затем нажимаете кнопку с надписью «Источник данных». Переменная MaxLongVarCharSize прямо здесь. В Ubuntu вы добавляете строку MaxLongVarcharSize = 256000 (или что-то еще) в соответствующий источник данных в файле /etc/odbc.ini. - person MiG62; 13.09.2011

Вы можете попробовать использовать другой драйвер БД, например JDBC. По моему опыту, это иногда решало проблему.

Также попробуйте пакет RMySQL (текущие двоичные файлы должны быть скомпилированы. Если вы собираете их самостоятельно, попросите вас поделиться с сообществом)

Вероятно, источник пакета RODBC «мог» дать представление об ограничениях длины по умолчанию, если таковые имеются. (Я еще не смотрел на это, но скоро опубликую здесь обновление)

person harshsinghal    schedule 07.01.2011
comment
Привет, спасибо, он отлично работает с соединением JDBC. Пока неясно, почему он не работает должным образом с подключением ODBC :( - person sayan dasgupta; 09.01.2011

Другая возможность, почему извлекаемое количество символов может быть ограничено, - это ограничение проверки «работоспособности» до 65535 байтов в самом пакете RODBC - как упоминалось здесь.

person petermeissner    schedule 26.11.2013