Ik ben niet bekend met ODBC en RODBC
, maar mijn lezing van het bovenstaande documentatiefragment is dat SET NAMES 'utf8';
maakt deel uit van MySQL's SQL-dialect
, dus u voert dat uit zoals u elke andere SQL-instructie zou uitvoeren die u zou kunnen gebruiken om gegevens uit uw database op te halen.
Iets als (niet getest):
sqlQuery(myChannel, query = "SET NAMES 'utf8';")
waar myChannel
is de verbindingshandle die wordt geretourneerd door odbcConnect()
.
Is er een reden waarom u RODBC gebruikt via het RMySQL-pakket? Ik heb goede ervaring met het gebruik van RMySQL voor uitgebreide gegevensverwerking en het ophalen van complexe gegevenssets, allemaal vanuit R.
Bijwerken: Er is sommige bewijs
dat, tenminste op een gegeven moment, dat SET NAMES
is gedeactiveerd in het MySQL ODBC-stuurprogramma. Als je zeker bent, kun je de karakters lezen via directe toegang tot de database (via mysql
of een van de GUI-frontends van MySQL), dan kunt u proberen te repliceren wat SET NAMES
doet. Het volgende komt uit de MySQL-handleiding
:
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;
Je zou kunnen proberen die drie SQL-instructies uit te voeren in plaats van SET NAMES
en kijk of dat werkt.
Dezelfde handleiding documenteert ook SET CHARACTER SET
, die op dezelfde manier kan worden gebruikt als SET NAMES
:
SET CHARACTER SET charset_name
SET CHARACTER SET
lijkt op SET NAMES
maar stelt character_set_connection
in en collation_connection
naar character_set_database
en collation_database
. A SET CHARACTER SET x
statement is gelijk aan deze drie statements:
SET character_set_client = x;
SET character_set_results = x;
SET collation_connection = @@collation_database;
collation_connection
instellen stelt ook character_set_connection
. in naar de tekenset die is gekoppeld aan de sortering (gelijk aan het uitvoeren van SET character_set_connection = @@character_set_database
). Het is niet nodig om character_set_connection
in te stellen expliciet.
Je zou kunnen proberen met behulp van SET CHARACTER SET 'utf8'
in plaats daarvan.
Tot slot, in welke tekenset / landinstelling gebruik je? Het lijkt erop dat u zich in Windows bevindt - is dit een UTF8-landinstelling? Ik constateer ook enige verwarring in uw vraag. U zegt dat u uw gegevens naar MS Access hebt geïmporteerd en deze vervolgens naar ODBC hebt geëxporteerd. Bedoel je dat je het naar MySQL hebt geëxporteerd? Ik dacht dat ODBC een verbindingsstuurprogramma was om communicatie met/tussen een reeks databases mogelijk te maken, niet iets waarnaar je zou kunnen "exporteren".
Staan je gegevens echt in MySQL? Kunt u geen verbinding maken met MS Access via RODBC om de gegevens vanaf daar te lezen?
Als de gegevens in MySQL staan, probeer dan het RMySQL-pakket te gebruiken om verbinding te maken met de database en de gegevens te lezen.