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.