Eu me deparei com o mesmo problema frustrante. Às vezes, o
AS
palavra-chave teria o efeito pretendido, mas outras vezes não. Não consegui identificar as condições para fazê-lo funcionar corretamente. Resposta curta: (Obrigado a Simon Urbanek (mantenedor do pacote para RJDBC), Yev e Sebastien! Veja a Resposta Longa. ) Uma coisa que você pode tentar é abrir sua conexão JDBC usando
?useOldAliasMetadataBehavior=true
em sua cadeia de conexão. Exemplo:drv <- JDBC("com.mysql.jdbc.Driver", "C:/JDBC/mysql-connector-java-5.1.18-bin.jar", identifier.quote="`")
conn <- dbConnect(drv, "jdbc:mysql://server/schema?useOldAliasMetadataBehavior=true", "username", "password")
query <- "SELECT `a` AS `b` FROM table"
result <- dbGetQuery(conn, query)
dbDisconnect(conn)
Isso acabou funcionando para mim! Veja mais detalhes, incluindo advertências, na Resposta longa.
Resposta longa: Eu tentei todos os tipos de coisas, incluindo fazer visualizações, alterar consultas, usar instruções JOIN, NÃO usar instruções JOIN, usar instruções ORDER BY e GROUP BY, etc. Eu nunca consegui descobrir por que algumas das minhas consultas foram capazes de renomear colunas e outros não.
Entrei em contato com o mantenedor do pacote (Simon Urbanek). Aqui está o que ele disse:
Ele então recomendou que eu me certificasse de ter o driver JDBC mais recente para MySQL. Eu tinha a versão mais recente. No entanto, isso me fez pensar "talvez seja um bug com o driver JDBC." Então, eu procurei no Google por:
mysql jdbc driver bug alias
. O resultado principal para esta consulta foi uma entrada em bugs.mysql.com . Yev, usando o MySQL 5.1.22, diz que quando ele atualizou da versão do driver 5.0.4 para 5.1.5, seus aliases de coluna pararam de funcionar. Perguntado se era um bug.
Sebastien respondeu:"Não, não é um bug! É uma mudança de comportamento documentada em todas as versões subsequentes do driver." e sugeriu usar
?useOldAliasMetadataBehavior=true
, citando a documentação do driver JDBC
. Ressalva Leitor: A documentação do driver JDBC afirma que
Eu não tive tempo para pesquisar completamente o que isso significa. Em outras palavras, não sei quais são todas as ramificações de usar
useOldAliasMetadataBehavior=true
são. Use por sua conta e risco. Alguém tem mais informações?