Mi sono imbattuto nello stesso problema frustrante. A volte il AS
la parola chiave avrebbe l'effetto previsto, ma altre volte no. Non sono riuscito a identificare le condizioni per farlo funzionare correttamente.
Risposta breve: (Grazie a Simon Urbanek (gestore del pacchetto per RJDBC), Yev e Sebastien! Vedi la Risposta lunga. ) Una cosa che puoi provare è aprire la tua connessione JDBC usando ?useOldAliasMetadataBehavior=true
nella stringa di connessione. Esempio:
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)
Questo ha finito per funzionare per me! Vedi maggiori dettagli, inclusi avvertimenti, nella Risposta lunga.
Risposta lunga: Ho provato ogni sorta di cose, incluso creare visualizzazioni, modificare query, utilizzare istruzioni JOIN, NON utilizzare istruzioni JOIN, utilizzare istruzioni ORDER BY e GROUP BY, ecc. Non sono mai stato in grado di capire perché alcune delle mie query sono state in grado di rinominare le colonne e altri no.
Ho contattato il manutentore del pacchetto (Simon Urbanek.) Ecco cosa ha detto:
Quindi mi ha consigliato di assicurarmi di avere il driver JDBC più recente per MySQL. Avevo la versione più recente. Tuttavia, mi ha fatto pensare "forse È un bug con il driver JDBC". Quindi, ho cercato su Google:mysql jdbc driver bug alias
.
Il risultato principale di questa query è stato una voce su bugs.mysql.com . Yev, utilizzando MySQL 5.1.22, afferma che quando ha aggiornato dalla versione del driver 5.0.4 alla 5.1.5, i suoi alias di colonna hanno smesso di funzionare. Alla domanda se fosse un bug.
Sebastien ha risposto:"No, non è un bug! È un cambiamento di comportamento documentato in tutte le versioni successive del driver". e suggerito di utilizzare ?useOldAliasMetadataBehavior=true
, citando la documentazione per il driver JDBC
.
Lettore di avvertenza: La documentazione per il driver JDBC afferma che
Non ho avuto il tempo di ricercare completamente cosa significa. In altre parole, non so quali siano tutte le ramificazioni dell'utilizzo di useOldAliasMetadataBehavior=true
sono. Utilizzare a proprio rischio. Qualcun altro ha più informazioni?