sql >> Databasteknik >  >> RDS >> Mysql

Hur ställer man in teckenuppsättning för MySQL i RODBC?

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.



  1. Lagra filer i SQL-databas med FILESTREAM – Del 2

  2. Fel för tidigt slut på data med PHP

  3. SQL Array-sökning

  4. MySQL-db lib för Python 3.x?