Domanda

Io sono il recupero dei dati da MySQL Server in R utilizzando RODBC.
Quindi, in una colonna del database è un vettore di carattere

SELECT MAX(CHAR_LENGTH(column)) FROM reqtable;

RESI 26566

Ora vi mostrerò un esempio di come sto funzionando nel problema

`library(RODBC)
 con <- odbcConnect("mysqlcon")
 rslts <- as.numeric(sqlQuery(con,
                          "SELECT CHAR_LENGTH(column) FROM reqtable LIMIT 10",
                          as.is=TRUE)[,1])

` ritorna

> rslts
 [1]  62  31  17 103  30 741  28  73  25 357

dove, come rslts <- nchar(as.character(sqlQuery(con, "SELECT column FROM reqtable LIMIT 10", as.is=TRUE)[,1])) ritorna

> rslts
 [1]  62  31  17 103  30 255  28  73  25 255

Quindi, stringhe con lunghezza> 255 sta ottenendo troncato a 255. C'è un modo posso ottenere la stringa completa.

Grazie

È stato utile?

Soluzione

Il driver ODBC PostgreSQL ha una variabile chiamata MaxLongVarcharSize che ho trovato insieme a 8190 per default (ho usato sia su Windows e Ubuntu). È possibile che il driver MySQL ODBC ha una variabile insieme simile a 255.

Altri suggerimenti

Si potrebbe provare a utilizzare un altro driver db, come JDBC. Nella mia esperienza questo è a volte risolto il problema.

Inoltre, cercare il pacchetto RMySQL (binari attuali devono essere compilati. Se non compilare da soli, chiedere di si prega di condividere con la comunità)

Probabilmente la fonte del pacchetto RODBC "potrebbe" fornire approfondimenti sulle limitazioni di lunghezza predefinita eventuali. (Non ho ancora guardato, ma sarò presto e postare un aggiornamento qui)

Un'altra possibilità perché il numero di caratteri recuperato potrebbe essere limitata è un 'sanità' restrizione assegno 65535 byte del pacchetto stesso RODBC - come detto qui .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top