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

谢谢

有帮助吗?

解决方案

PostgreSQL ODBC驱动程序具有一个称为MaxlongVarcharSize的变量,默认情况下我发现设置为8190(我在Windows和Ubuntu上都使用过它)。 MySQL ODBC驱动程序可能具有相似的变量集为255。

其他提示

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

另外,请尝试RMYSQL软件包(需要编译当前的二进制文件。如果您自己编译它们,请您与社区分享)

RODBC软件包的源可能会提供有关默认长度限制的见解。 (我还没有看过它,但是我很快就会在此处发布更新)

为了限制检索到的字符数量的另一种可能性是“理智”检查限制到RODBC软件包本身中的65535字节 - 如这里提到的.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top