Nie znam ODBC i RODBC , ale mój odczyt z powyższego fragmentu dokumentacji jest taki, że SET NAMES 'utf8'; jest częścią dialektu SQL
, więc uruchamiasz to tak samo, jak każdą inną instrukcję SQL, której możesz użyć do pobrania danych z bazy danych.
Coś takiego (nie testowane):
sqlQuery(myChannel, query = "SET NAMES 'utf8';")
gdzie myChannel jest uchwytem połączenia zwracanym przez odbcConnect() .
Czy istnieje powód, dla którego używasz RODBC zamiast pakietu RMySQL? Mam dobre doświadczenie w używaniu RMySQL do rozległego przetwarzania danych i pobierania złożonych zestawów danych z poziomu R.
Aktualizacja: Istnieje niektóre dowody
że przynajmniej w jednym momencie SET NAMES został dezaktywowany w sterowniku MySQL ODBC. Jeśli jesteś pewien, że możesz odczytać znaki poprzez bezpośredni dostęp do bazy danych (poprzez mysql lub jeden z interfejsów graficznych MySQL), możesz spróbować zreplikować to, co SET NAMES robi. Poniżej znajduje się podręcznik MySQL
:
A SET NAMES 'x' statement is equivalent to these three statements:
SET character_set_client = x;
SET character_set_results = x;
SET character_set_connection = x;
Możesz spróbować wykonać te trzy instrukcje SQL zamiast SET NAMES i zobacz, czy to działa.
Ta sama instrukcja dokumentuje również SET CHARACTER SET , którego można używać w taki sam sposób jak SET NAMES :
SET CHARACTER SET charset_name
SET CHARACTER SET jest podobny do SET NAMES ale ustawia character_set_connection i collation_connection do character_set_database i collation_database . A SET CHARACTER SET x oświadczenie jest równoważne tym trzem stwierdzeniom:
SET character_set_client = x;
SET character_set_results = x;
SET collation_connection = @@collation_database;
Ustawianie collation_connection ustawia również character_set_connection do zestawu znaków skojarzonego z sortowaniem (odpowiednik wykonania SET character_set_connection = @@character_set_database ). Nie jest konieczne ustawianie character_set_connection wyraźnie.
Możesz spróbować użyć SET CHARACTER SET 'utf8' zamiast tego.
Wreszcie, w jakim zestawie znaków/lokalizacji używasz? Wygląda na to, że korzystasz z systemu Windows — czy to jest lokalizacja UTF8? Zauważam również pewne zamieszanie w twoim pytaniu. Mówisz, że zaimportowałeś swoje dane do MS Access, a następnie wyeksportowałeś je do ODBC. Czy to znaczy, że wyeksportowałeś go do MySQL? Myślałem, że ODBC był sterownikiem połączenia umożliwiającym komunikację z/pomiędzy różnymi bazami danych, a nie czymś, do czego można by „eksportować”.
Czy naprawdę masz dane w MySQL? Nie możesz połączyć się z MS Access przez RODBC, aby odczytać stamtąd dane?
Jeśli dane znajdują się w MySQL, spróbuj użyć pakietu RMySQL, aby połączyć się z bazą danych i odczytać dane.