6

RODBC を使用して、MySql Server から R にデータをフェッチしています。
したがって、データベースの 1 つの列は文字ベクトルです。

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

as 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 などの別の db ドライバーを使用してみてください。私の経験では、これで問題が解決する場合があります。

また、RMySQL パッケージを試してください (現在のバイナリはコンパイルする必要があります。自分でコンパイルする場合は、コミュニティと共有してください)。

おそらく、RODBC パッケージのソースは、デフォルトの長さの制限がある場合、それについての洞察を提供することができます。(まだ見ていませんが、すぐにここにアップデートを投稿します)

于 2011-01-07T08:51:50.283 に答える