質問

MySQL ServerからRODBCを使用して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

一方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に同様の変数セットを持っている可能性があります。

他のヒント

JDBCなどの別のDBドライバーを使用しようとすることができます。私の経験では、これは時々問題を解決しました。

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

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

検索された数字の数が制限される可能性のある別の可能性は、RODBCパッケージ自体の65535バイトに対する「正気」チェック制限です - ここで述べたように.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top