Не съм запознат с ODBC и RODBC
, но моят прочит на горния фрагмент от документация е, че SET NAMES 'utf8';
е част от SQL диалект
на MySQL , така че изпълнявате това, както бихте направили всеки друг SQL израз, който може да използвате за извличане на данни от вашата база данни.
Нещо като (не е тестван):
sqlQuery(myChannel, query = "SET NAMES 'utf8';")
където myChannel
е манипулаторът на връзката, върнат от odbcConnect()
.
Има ли причина да използвате RODBC над пакета RMySQL? Имах добър опит с използването на RMySQL за обширна обработка на данни и извличане на сложни набори от данни, всичко това от R.
Актуализация: Има някои доказателства
че поне в един момент този SET NAMES
е деактивиран в MySQL ODBC драйвера. Ако сте уверени, можете да прочетете знаците чрез директен достъп до базата данни (чрез mysql
или един от предните части на GUI на MySQL), тогава можете да опитате да репликирате това, което SET NAMES
прави. Следното е от ръководството за 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;
Можете да опитате да изпълните тези три SQL оператора вместо SET NAMES
и вижте дали това работи.
Същото ръководство документира и SET CHARACTER SET
, който може да се използва по същия начин като SET NAMES
:
SET CHARACTER SET charset_name
SET CHARACTER SET
е подобен на SET NAMES
но задава character_set_connection
и collation_connection
към character_set_database
и collation_database
. A SET CHARACTER SET x
оператор е еквивалентен на тези три изявления:
SET character_set_client = x;
SET character_set_results = x;
SET collation_connection = @@collation_database;
Настройка на collation_connection
също така задава character_set_connection
към набора от знаци, асоцииран със съпоставянето (еквивалентно на изпълнение на SET character_set_connection = @@character_set_database
). Не е необходимо да задавате character_set_connection
изрично.
Можете да опитате да използвате SET CHARACTER SET 'utf8'
вместо това.
И накрая, с какъв набор от знаци / локал работите? Изглежда, че сте на Windows - това UTF8 локал ли е? Също така отбелязвам известно объркване във вашия Q. Казвате, че сте импортирали вашите данни в MS Access и след това ги експортирате в ODBC. Искате да кажете, че сте го експортирали в MySQL? Мислех, че ODBC е драйвер за връзка, който позволява комуникация с/между редица бази данни, а не нещо, към което можете да "експортирате".
Наистина ли имате данни в MySQL? Не можете ли да се свържете с MS Access чрез RODBC, за да прочетете данните от там?
Ако данните са в MySQL, опитайте да използвате пакета RMySQL, за да се свържете с базата данни и да прочетете данните.