6

我正在使用 RODBC 将数据从 MySql Server 提取到 R 中。
所以在数据库的一列中是一个字符向量

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 处被截断。有没有办法获得完整的字符串。

谢谢

4

3 回答 3

6

PostgreSQL ODBC 驱动程序有一个名为 MaxLongVarcharSize 的变量,我发现它默认设置为 8190(我在 Windows 和 Ubuntu 上都使用过它)。MySQL ODBC 驱动程序可能有一个类似的变量设置为 255。

于 2011-06-15T01:34:33.140 回答
1

您可以尝试使用其他数据库驱动程序,例如 JDBC。根据我的经验,这有时可以解决问题。

另外,试试RMySQL包(当前的二进制文件需要编译。如果你自己编译,请求你与社区分享)

如果有的话,RODBC 包的来源可能“可以”提供对默认长度限制的见解。(我还没有看过,但我很快就会在这里发布更新)

于 2011-01-07T08:51:50.283 回答
0

检索到的字符数可能受到限制的另一种可能性是 RODBC 包本身中对 65535 字节的“健全性”检查限制 -如此处所述

于 2013-11-26T22:04:58.230 回答