2011-01-07 19 views
6

Pobieranie danych z serwera MySql do wersji R przy użyciu kontrolera RODBC.
Więc w jednej kolumnie bazy danych jest wektorem znakówCiąg znaków RODBC jest przycinany

SELECT MAX(CHAR_LENGTH(column)) FROM reqtable; 

POWROTY 26566

Teraz pokażę wam przykład jak używam do problemu

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

` powraca

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

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

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

więc ciągi o długości> 255 jest uzyskiwanie skrócona 255. Czy istnieje sposób mogę uzyskać pełny ciąg.

Dzięki

+1

To pytanie rozwiązało problem dla mnie: http://stackoverflow.com/questions/22366195/rodbc-sqlquery-returns-varchar255-when-it-should-return-varmarmax – bart

Odpowiedz

2

Sterownik ODBC PostgreSQL ma zmienną o nazwie MaxLongVarcharSize, którą domyślnie ustawiłem na 8190 (użyłem jej zarówno na Windows i Ubuntu). Możliwe, że sterownik MySQL ODBC ma podobną zmienną ustawioną na 255.

+0

Hej jakikolwiek pomysł, aby to sprawdzić i edytować? Myślę, że jest to podobny problem –

+2

W systemie Windows wybierz swoje źródło danych (w Panelu sterowania | Narzędzia administracyjne | Źródła ODBC) i kliknij przycisk configure, a następnie wybierz przycisk, który mówi źródło danych.W tym miejscu znajduje się zmienna MaxLongVarCharSize.W systemie Ubuntu dodajesz linię MaxLongVarcharSize = 256000 (lub cokolwiek innego) do odpowiedniego źródła danych w pliku/etc/odbc.ini. – MiG62

1

Możesz spróbować użyć innego sterownika db, takiego jak JDBC. Z mojego doświadczenia wynika, że ​​czasami rozwiązuje to problem.

Spróbuj też pakiet RMySQL (obecne binarne muszą być kompilowane. Jeśli nie skompilować je samodzielnie, poproś, aby proszę podzielić się ze społecznością)

Prawdopodobnie źródłem pakietu RODBC „może” dostarczyć spostrzeżenia do domyślnych ograniczeń długości, jeśli takie istnieją. (Jeszcze się na to nie patrzyłem, ale niedługo opublikuję tutaj aktualizację)

+0

Hej, dziękuję, że działa idealnie dobrze z Połączenie JDBC. Jednak nie jest jasne, dlaczego nie działa poprawnie z połączenia ODBC :( –

0

Inną możliwością ograniczenia liczby pobranych znaków jest ograniczenie kontroli "poczytalności" do 65535 bajtów w samym pakiecie RODBC - as mentioned here.