質問
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バイトに対する「正気」チェック制限です - ここで述べたように.