Jag är inte bekant med ODBC och RODBC
, men min läsning av ovanstående dokumentation är att SET NAMES 'utf8';
är en del av MySQL:s SQL-dialekt
, så du kör det som alla andra SQL-satser som du kan använda för att hämta data från din databas.
Något i stil med (ej testat):
sqlQuery(myChannel, query = "SET NAMES 'utf8';")
där myChannel
är anslutningshandtaget som returneras av odbcConnect()
.
Finns det en anledning till att du använder RODBC över RMySQL-paketet? Jag har god erfarenhet av att använda RMySQL för omfattande databearbetning och hämtning av komplexa uppsättningar data, allt inifrån R.
Uppdatering: Det finns några bevis
att, åtminstone vid ett tillfälle, att SET NAMES
har avaktiverats i MySQL ODBC-drivrutinen. Om du är säker kan du läsa tecknen via direktåtkomst till databasen (via mysql
eller något av MySQL:s GUI-gränssnitt), så kan du försöka replikera vad SET NAMES
gör. Följande är från MySQL-manualen
:
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;
Du kan prova att köra dessa tre SQL-satser istället för SET NAMES
och se om det fungerar.
Samma manual dokumenterar även SET CHARACTER SET
, som kan användas på samma sätt som SET NAMES
:
SET CHARACTER SET charset_name
SET CHARACTER SET
liknar SET NAMES
men ställer in character_set_connection
och collation_connection
till character_set_database
och collation_database
. En SET CHARACTER SET x
uttalande motsvarar dessa tre påståenden:
SET character_set_client = x;
SET character_set_results = x;
SET collation_connection = @@collation_database;
Ställer in collation_connection
ställer också in character_set_connection
till teckenuppsättningen som är associerad med sorteringen (motsvarande exekvering av SET character_set_connection = @@character_set_database
). Det är inte nödvändigt att ställa in character_set_connection
uttryckligen.
Du kan prova att använda SET CHARACTER SET 'utf8'
istället.
Till sist, vilken teckenuppsättning / lokalisering kör du i? Det ser ut som att du är på Windows - är detta en UTF8-språkplats? Jag noterar också en viss förvirring i din Q. Du säger att du har importerat din data till MS Access och sedan exporterar den till ODBC. Menar du att du exporterade den till MySQL? Jag trodde att ODBC var en anslutningsdrivrutin för att tillåta kommunikation med/mellan en rad databaser, inte något du kunde "exportera till".
Är din data verkligen i MySQL? Kunde du inte ansluta till MS Access via RODBC för att läsa data därifrån?
Om data finns i MySQL, försök använda RMySQL-paketet för att ansluta till databasen och läsa data.