Строка RODBC становится усеченной - PullRequest
6 голосов
/ 07 января 2011

Я получаю данные с 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. Есть ли способ получить полную строку?

Спасибо

Ответы [ 3 ]

6 голосов
/ 15 июня 2011

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

1 голос
/ 07 января 2011

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

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

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

0 голосов
/ 27 ноября 2013

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

...