Я не знаком с ODBC и RODBC
, но мое прочтение приведенного выше фрагмента документации состоит в том, что SET NAMES 'utf8';
является частью MySQL диалекта SQL , поэтому запустите его так же, как любой другой оператор SQL, который вы можете использовать для извлечения данных из вашей базы данных.
Что-то вроде (не проверено):
sqlQuery(myChannel, query = "SET NAMES 'utf8';")
где myChannel
- дескриптор соединения, возвращаемый odbcConnect()
.
Есть ли причина, по которой вы используете RODBC поверх пакета RMySQL? У меня был хороший опыт использования RMySQL для обширной обработки данных и извлечения сложных наборов данных в пределах R.
Обновление:
Есть некоторые свидетельства , что, по крайней мере, в один момент, что SET NAMES
было деактивировано в драйвере ODBC MySQL. Если вы уверены, что можете читать символы через прямой доступ к базе данных (через mysql
или через один из интерфейсов 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
. SET CHARACTER SET x
оператор эквивалентен этим трем операторам:
SET character_set_client = x;
SET character_set_results = x;
SET collation_connection = @@collation_database;
Установка collation_connection
также устанавливает c haracter_set_connection
на набор символов, связанный с сопоставлением (эквивалентно выполнению SET character_set_connection = @@character_set_database
). Нет необходимости устанавливать character_set_connection
явно.
Вместо этого вы можете попробовать SET CHARACTER SET 'utf8'
.
Наконец, в каком наборе символов / локали вы работаете? Похоже, вы находитесь на Windows - это локаль UTF8? Я также отмечаю некоторую путаницу в вашем вопросе. Вы говорите, что импортировали свои данные в MS Access, а затем экспортировали их в ODBC. Вы имеете в виду, что вы экспортировали его в MySQL? Я думал, что ODBC был драйвером соединения, позволяющим осуществлять связь с / между целым рядом баз данных, а не чем-то, что вы могли бы «экспортировать».
Действительно ли вы данные в MySQL? Не могли бы вы подключиться к MS Access через RODBC для чтения данных оттуда?
Если данные находятся в MySQL, попробуйте использовать пакет RMySQL для подключения к базе данных и чтения данных.