No estoy familiarizado con ODBC y RODBC
, pero mi lectura del fragmento de documentación anterior es que SET NAMES 'utf8';
es parte del dialecto SQL
de MySQL , por lo que lo ejecuta como lo haría con cualquier otra instrucción SQL que pueda usar para recuperar datos de su base de datos.
Algo como (no probado):
sqlQuery(myChannel, query = "SET NAMES 'utf8';")
donde myChannel
es el identificador de conexión devuelto por odbcConnect()
.
¿Hay alguna razón por la que esté usando RODBC sobre el paquete RMySQL? He tenido una buena experiencia en el uso de RMySQL para el procesamiento extenso de datos y la recuperación de conjuntos de datos complejos, todo desde R.
Actualización: Hay algunos evidencia
que, al menos en un punto, que SET NAMES
se ha desactivado en el controlador ODBC de MySQL. Si está seguro de que puede leer los caracteres a través del acceso directo a la base de datos (a través de mysql
o una de las interfaces gráficas de usuario de MySQL), entonces podría intentar replicar lo que SET NAMES
hace. Lo siguiente es del manual de 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;
Podría intentar ejecutar esas tres declaraciones SQL en lugar de SET NAMES
y ver si eso funciona.
El mismo manual también documenta SET CHARACTER SET
, que se puede usar de la misma manera que SET NAMES
:
SET CHARACTER SET charset_name
SET CHARACTER SET
es similar a SET NAMES
pero establece character_set_connection
y collation_connection
a character_set_database
y collation_database
. A SET CHARACTER SET x
declaración es equivalente a estas tres declaraciones:
SET character_set_client = x;
SET character_set_results = x;
SET collation_connection = @@collation_database;
Configuración de collation_connection
también establece character_set_connection
al juego de caracteres asociado con la intercalación (equivalente a ejecutar SET character_set_connection = @@character_set_database
). No es necesario configurar character_set_connection
explícitamente.
Podría intentar usar SET CHARACTER SET 'utf8'
en su lugar.
Finalmente, ¿en qué conjunto de caracteres / configuración regional se está ejecutando? Parece que está en Windows:¿es esta una configuración regional UTF8? También observo cierta confusión en su P. Dice que importó sus datos a MS Access y luego los exportó a ODBC. ¿Quieres decir que lo exportaste a MySQL? Pensé que ODBC era un controlador de conexión para permitir la comunicación con/entre un rango de bases de datos, no algo que pudieras "exportar".
¿Están sus datos realmente en MySQL? ¿No podría conectarse a MS Access a través de RODBC para leer los datos desde allí?
Si los datos están en MySQL, intente usar el paquete RMySQL para conectarse a la base de datos y leer los datos.