Não estou familiarizado com ODBC e
RODBC
, mas minha leitura do trecho de documentação acima é que SET NAMES 'utf8';
faz parte do dialeto SQL
do MySQL , então você executa isso como faria com qualquer outra instrução SQL que possa usar para recuperar dados de seu banco de dados. Algo como (não testado):
sqlQuery(myChannel, query = "SET NAMES 'utf8';")
onde
myChannel
é o identificador de conexão retornado por odbcConnect()
. Existe uma razão pela qual você está usando o RODBC sobre o pacote RMySQL? Eu tive uma boa experiência usando RMySQL para processamento extensivo de dados e recuperação de conjuntos complexos de dados, tudo dentro do R.
Atualização: Há algum evidência que, pelo menos em um ponto, que
SET NAMES
foi desativado no driver ODBC do MySQL. Se você estiver confiante de que pode ler os caracteres via acesso direto ao banco de dados (via mysql
ou um dos front-ends GUI do MySQL), então você pode tentar replicar o que SET NAMES
faz. O seguinte é do manual 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;
Você pode tentar executar essas três instruções SQL no lugar de
SET NAMES
e veja se isso funciona. O mesmo manual também documenta
SET CHARACTER SET
, que pode ser usado da mesma forma que SET NAMES
:SET CHARACTER SET charset_name
SET CHARACTER SET
é semelhante a SET NAMES
mas define character_set_connection
e collation_connection
para character_set_database
e collation_database
. A SET CHARACTER SET x
declaração é equivalente a estas três declarações:SET character_set_client = x;
SET character_set_results = x;
SET collation_connection = @@collation_database;
Configurando
collation_connection
também define character_set_connection
ao conjunto de caracteres associado ao agrupamento (equivalente a executar SET character_set_connection = @@character_set_database
). Não é necessário definir character_set_connection
explicitamente. Você pode tentar usar
SET CHARACTER SET 'utf8'
em vez de. Por fim, em qual conjunto de caracteres / localidade você está executando? Parece que você está no Windows - esta é uma localidade UTF8? Também noto alguma confusão em seu Q. Você diz que importou seus dados para o MS Access e depois os exportou para ODBC. Você quer dizer que você exportou para o MySQL? Eu pensei que o ODBC era um driver de conexão para permitir a comunicação com/entre um intervalo de bancos de dados, não algo que você pudesse "exportar".
Você está dados realmente no MySQL? Você não conseguiu se conectar ao MS Access via RODBC para ler os dados de lá?
Se os dados estiverem no MySQL, tente usar o pacote RMySQL para se conectar ao banco de dados e ler os dados.