2011-01-07 16 views
6

Sto recuperando dati da MySql Server in R utilizzando RODBC.
Quindi, in una colonna del database è un vettore di carattereLa stringa RODBC viene troncata

SELECT MAX(CHAR_LENGTH(column)) FROM reqtable; 

RITORNI 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]) 

` rendimenti

> 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])) rendimenti

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

Così stringhe con lunghezza> 255 sta ottenendo troncato a 255. C'è un modo per ottenere la stringa completa.

Grazie

+1

Questa domanda ha risolto il problema per me: http://stackoverflow.com/questions/22366195/rodbc-sqlquery-returns-varchar255-when-it-should-return-varcharmax – bart

risposta

2

Il driver ODBC PostgreSQL ha una variabile chiamata MaxLongVarcharSize che ho trovato impostata su 8190 per impostazione predefinita (l'ho usata sia su Windows e Ubuntu). È possibile che il driver ODBC MySQL abbia una variabile simile impostata a 255.

+0

Hey qualsiasi idea su come controllarlo e modificarlo? Suppongo che sia un problema simile –

+2

Su Windows si seleziona la fonte dati (nel Pannello di controllo | Strumenti di amministrazione | Origini ODBC) e fare clic su Configura, quindi selezionare il pulsante che indica l'origine dati. La variabile MaxLongVarCharSize è proprio lì. Su Ubuntu si aggiunge la riga MaxLongVarcharSize = 256000 (o qualsiasi altra cosa) alla sorgente dati pertinente nel file/etc/ODBC.INI. – MiG62

1

Si potrebbe provare a utilizzare un altro driver db, come JDBC. Nella mia esperienza questo a volte ha 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 l'origine del pacchetto RODBC "potrebbe" fornire approfondimenti nei limiti di lunghezza predefiniti, se presenti. (Non l'ho ancora guardato, ma lo farò presto e posterò un aggiornamento qui)

+0

Hey, grazie, funziona perfettamente con un Connessione JDBC. Tuttavia non è chiaro il motivo per cui non funziona correttamente con una connessione ODBC :( –

0

Un'altra possibilità per cui il numero di caratteri recuperato potrebbe essere limitato è una restrizione di controllo 'sanità' a 65535 byte nel pacchetto RODBC stesso - as mentioned here.

Problemi correlati