Non ho familiarità con ODBC e RODBC
, ma la mia lettura del frammento di documentazione di cui sopra è che SET NAMES 'utf8';
fa parte del dialetto SQL
di MySQL , quindi lo esegui come faresti con qualsiasi altra istruzione SQL che potresti utilizzare per recuperare i dati dal tuo database.
Qualcosa come (non testato):
sqlQuery(myChannel, query = "SET NAMES 'utf8';")
dove myChannel
è l'handle di connessione restituito da odbcConnect()
.
C'è un motivo per cui stai usando RODBC sul pacchetto RMySQL? Ho avuto una buona esperienza nell'uso di RMySQL per l'elaborazione estensiva dei dati e il recupero di insiemi complessi di dati, il tutto dall'interno di R.
Aggiornamento: Ci sono alcuni prove
che, almeno in un punto, quel SET NAMES
è stato disattivato nel driver MySQL ODBC. Se sei sicuro puoi leggere i caratteri tramite l'accesso diretto al database (tramite mysql
o uno dei front-end della GUI di MySQL), allora potresti provare a replicare ciò che SET NAMES
fa. Quanto segue è tratto dal manuale 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;
Potresti provare a eseguire queste tre istruzioni SQL al posto di SET NAMES
e vedi se funziona.
Lo stesso manuale documenta anche SET CHARACTER SET
, che può essere utilizzato allo stesso modo di SET NAMES
:
SET CHARACTER SET charset_name
SET CHARACTER SET
è simile a SET NAMES
ma imposta character_set_connection
e collation_connection
a character_set_database
e collation_database
. A SET CHARACTER SET x
istruzione è equivalente a queste tre affermazioni:
SET character_set_client = x;
SET character_set_results = x;
SET collation_connection = @@collation_database;
Impostazione di collation_connection
imposta anche character_set_connection
al set di caratteri associato alle regole di confronto (equivalente all'esecuzione di SET character_set_connection = @@character_set_database
). Non è necessario impostare character_set_connection
esplicitamente.
Potresti provare a usare SET CHARACTER SET 'utf8'
invece.
Infine, quale set di caratteri/località stai utilizzando? Sembra che tu sia su Windows:è una localizzazione UTF8? Noto anche una certa confusione nella tua Q. Dici di aver importato i tuoi dati in MS Access e quindi di esportarli in ODBC. Vuoi dire che l'hai esportato su MySQL? Pensavo che ODBC fosse un driver di connessione per consentire la comunicazione con/tra una gamma di database, non qualcosa in cui potresti "esportare".
I tuoi dati sono davvero in MySQL? Non potresti connetterti a MS Access tramite RODBC per leggere i dati da lì?
Se i dati sono in MySQL, prova a usare il pacchetto RMySQL per connetterti al database e leggere i dati.