sql >> Database teknologi >  >> RDS >> Mysql

Omdøbning af kolonner i en MySQL select-sætning med R-pakken RJDBC

Jeg er stødt på det samme frustrerende problem. Nogle gange er AS søgeord ville have sin tilsigtede effekt, men andre gange ville det ikke. Jeg var ikke i stand til at identificere betingelserne for at få det til at fungere korrekt.

Kort svar: (Tak til Simon Urbanek (pakkevedligeholder for RJDBC), Yev og Sebastien! Se det lange svar. ) En ting, du kan prøve, er at åbne din JDBC-forbindelse ved hjælp af ?useOldAliasMetadataBehavior=true i din forbindelsesstreng. Eksempel:

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)

Det endte med at virke for mig! Se flere detaljer, herunder advarsler, i Langt svar.

Langt svar: Jeg prøvede alle mulige ting, inklusive at lave visninger, ændre forespørgsler, bruge JOIN-sætninger, IKKE bruge JOIN-sætninger, bruge ORDER BY og GROUP BY-sætninger osv. Jeg var aldrig i stand til at finde ud af, hvorfor nogle af mine forespørgsler var i stand til at omdøbe kolonner og andre var ikke.

Jeg kontaktede pakkevedligeholderen (Simon Urbanek.) Her er hvad han sagde:

Han anbefalede mig derefter at sikre mig, at jeg havde den seneste JDBC-driver til MySQL. Jeg havde den nyeste version. Men det fik mig til at tænke "måske ER det en fejl med JDBC-driveren." Så jeg søgte på Google efter:mysql jdbc driver bug alias .

Det øverste resultat for denne forespørgsel var en post på bugs.mysql.com . Yev, der bruger MySQL 5.1.22, siger, at da han opgraderede fra driverversion 5.0.4 til 5.1.5, holdt hans kolonnealiaser op med at virke. Spurgte, om det var en fejl.

Sebastien svarede:"Nej, det er ikke en fejl! Det er en dokumenteret ændring af adfærd i alle efterfølgende versioner af driveren." og foreslog at bruge ?useOldAliasMetadataBehavior=true , med henvisning til dokumentation til JDBC-driveren .

Forbehold Lector: Dokumentationen til JDBC-driveren angiver, at

Jeg har ikke haft tid til at undersøge, hvad det betyder. Med andre ord, jeg ved ikke, hvad alle konsekvenserne er af at bruge useOldAliasMetadataBehavior=true er. Brug på eget ansvar. Er der en anden, der har flere oplysninger?



  1. Hvad er standardnavnet i MySQL?

  2. Retter ødelagt UTF-8-kodning

  3. Slut 4 tabeller i SQL-forespørgsel

  4. Sådan opretter du en database i MySQL